platform/upstream/llvm.git
9 years ago[unroll] Directly query for dead instructions.
Chandler Carruth [Fri, 13 Feb 2015 04:14:05 +0000 (04:14 +0000)]
[unroll] Directly query for dead instructions.

In the unroll analyzer, it is checking each user to see if that user
will become dead. However, it first checked if that user was missing
from the simplified values map, and then if was also missing from the
dead instructions set. We add everything from the simplified values map
to the dead instructions set, so the first step is completely subsumed
by the second. Moreover, the first step requires *inserting* something
into the simplified value map which isn't what we want at all.

This also replaces a dyn_cast with a cast as an instruction cannot be
used by a non-instruction.

llvm-svn: 229057

9 years ago[unroll] Replace a linear time check for no uses with a constant time
Chandler Carruth [Fri, 13 Feb 2015 04:06:08 +0000 (04:06 +0000)]
[unroll] Replace a linear time check for no uses with a constant time
check.

Also hoist this into the enqueue process as it is faster even than
testing the worklist set, we should just directly filter these out much
like we filter out constants and such.

llvm-svn: 229056

9 years agoRemove unused parameters.
Rui Ueyama [Fri, 13 Feb 2015 04:02:55 +0000 (04:02 +0000)]
Remove unused parameters.

llvm-svn: 229055

9 years ago[unroll] Rather than an operand set, use a setvector for the worklist.
Chandler Carruth [Fri, 13 Feb 2015 03:57:40 +0000 (03:57 +0000)]
[unroll] Rather than an operand set, use a setvector for the worklist.

We don't just want to handle duplicate operands within an instruction,
but also duplicates across operands of different instructions. I should
have gone straight to this, but I had convinced myself that it wasn't
going to be necessary briefly. I've come to my senses after chatting
more with Nick, and am now happier here.

llvm-svn: 229054

9 years ago[unroll] Extract the code to enqueue operansd for the worklist in the
Chandler Carruth [Fri, 13 Feb 2015 03:49:41 +0000 (03:49 +0000)]
[unroll] Extract the code to enqueue operansd for the worklist in the
unroll analysis into a lambda and call it. That's much simpler than
duplicating all the code.

llvm-svn: 229053

9 years ago[unroll] Use a small set to de-duplicate operands prior to putting them
Chandler Carruth [Fri, 13 Feb 2015 03:48:38 +0000 (03:48 +0000)]
[unroll] Use a small set to de-duplicate operands prior to putting them
into the worklist. This avoids allocating lots of worklist memory for
them when there are large numbers of repeated operands.

llvm-svn: 229052

9 years agoRemove KindArcH::PowerPC and sort enums alphabetically.
Rui Ueyama [Fri, 13 Feb 2015 03:47:34 +0000 (03:47 +0000)]
Remove KindArcH::PowerPC and sort enums alphabetically.

llvm-svn: 229051

9 years ago[unroll] Make the unroll cost analysis terminate deterministically and
Chandler Carruth [Fri, 13 Feb 2015 03:40:58 +0000 (03:40 +0000)]
[unroll] Make the unroll cost analysis terminate deterministically and
reasonably quickly.

I don't have a reduced test case, but for a version of FFMPEG, this
makes the loop unroller start finishing at all (after over 15 minutes of
running, it hadn't terminated for me, no idea if it was a true infloop
or just exponential work).

The key thing here is to check the DeadInstructions set when pulling
things off the worklist. Without this, we would re-walk the user list of
already dead instructions again and again and again. Consider phi nodes
with many, many operands and other patterns.

The other important aspect of this is that because we would keep
re-visiting instructions that were already known dead, we kept adding
their cost savings to this! This would cause our cost savings to be
*insanely* inflated from this.

While I was here, I also rotated the operand walk out of the worklist
loop to make the code easier to read. There is still work to be done to
minimize worklist traffic because we don't de-duplicate operands. This
means we may add the same instruction onto the worklist 1000s of times
if it shows up in 1000s of operansd to a PHI node for example.

Still, with this patch, the ffmpeg testcase I have finishes quickly and
I can't measure the runtime impact of the unroll analysis any more. I'll
probably try to do a few more cleanups to this code, but not sure how
much cleanup I can justify right now.

llvm-svn: 229038

9 years agoIR: Drop never-used defaults for DIBuilder::createTemplate*(), NFC
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 03:35:29 +0000 (03:35 +0000)]
IR: Drop never-used defaults for DIBuilder::createTemplate*(), NFC

No caller specifies anything different; these parameters are dead code
and probably always have been.  The new hierarchy doesn't bother with
the fields at all (see r228607 and r228652).

llvm-svn: 229037

9 years agoFix error checking in get_temp_file_name().
Dan Albert [Fri, 13 Feb 2015 03:02:28 +0000 (03:02 +0000)]
Fix error checking in get_temp_file_name().

Checking errno without first checking that the call failed means that
if some other call prior to mkstemp failed with EINVAL prior to this,
the assert would fire even if mkstemp succeeded. If something failed
with EEXIST, it would go in to an infinite loop.

Change-Id: I3f140a3e15fe08664a38a8c9a950c4ed547eb481
llvm-svn: 229035

9 years agoR600/SI: Remove unnecessary check for fpimm
Matt Arsenault [Fri, 13 Feb 2015 02:47:22 +0000 (02:47 +0000)]
R600/SI: Remove unnecessary check for fpimm

llvm-svn: 229034

9 years ago[unroll] Make range based for loops a bit more explicit and more
Chandler Carruth [Fri, 13 Feb 2015 02:45:17 +0000 (02:45 +0000)]
[unroll] Make range based for loops a bit more explicit and more
readable.

The biggest thing that was causing me problems is recognizing the
references vs. poniters here. I also found that for maps naming the loop
variable as KeyValue helps make it obvious why you don't actually use it
directly. Finally, using 'auto' instead of 'User *' doesn't seem like
a good tradeoff. Much like with the other cases, I like to know its
a pointer, and 'User' is just as long and tells the reader a lot more.

llvm-svn: 229033

9 years agoBitcode: Remove confusing '?' from r229004, NFC
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 02:43:38 +0000 (02:43 +0000)]
Bitcode: Remove confusing '?' from r229004, NFC

The name is always part of the record, it just might be empty.  Remove
the `?` for clarity.

llvm-svn: 229032

9 years agoBitcode: Add trailing comma to MetadataCodes, NFC
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 02:41:36 +0000 (02:41 +0000)]
Bitcode: Add trailing comma to MetadataCodes, NFC

Suggested in the review of r229004, this should simplify diffs
in the future.

llvm-svn: 229031

9 years agoRemove class that really does nothing.
Rui Ueyama [Fri, 13 Feb 2015 02:34:08 +0000 (02:34 +0000)]
Remove class that really does nothing.

llvm-svn: 229030

9 years ago[IC] Fix a bug with the instcombine canonicalizing of loads and
Chandler Carruth [Fri, 13 Feb 2015 02:30:01 +0000 (02:30 +0000)]
[IC] Fix a bug with the instcombine canonicalizing of loads and
propagating of metadata.

We were propagating !nonnull metadata even when the newly formed load is
no longer of a pointer type. This is clearly broken and results in LLVM
failing the verifier and aborting. This patch just restricts the
propagation of !nonnull metadata to when we actually have a pointer
type.

This bug report and the initial version of this patch was provided by
Charles Davis! Many thanks for finding this!

We still need to add logic to round-trip the metadata correctly if we
combine from pointer types to integer types and then back by using range
metadata for the integer type loads. But this is the minimal and safe
version of the patch, which is important so we can backport it into 3.6.

llvm-svn: 229029

9 years ago[unroll] Avoid the "Insn" abbreviation of Instruction. This is quite
Chandler Carruth [Fri, 13 Feb 2015 02:17:39 +0000 (02:17 +0000)]
[unroll] Avoid the "Insn" abbreviation of Instruction. This is quite
hard to type and read for me, and is inconsistent with the other
abbreviation in the base class "Inst". For most of these (where they are
used widely) I prefer just spelling it out as Instruction. I've changed
two of the short-lived variables to use "Inst" to match the base class.

llvm-svn: 229028

9 years agoCheck interleaving without relying on debug output.
Olivier Sallenave [Fri, 13 Feb 2015 02:13:57 +0000 (02:13 +0000)]
Check interleaving without relying on debug output.

llvm-svn: 229027

9 years ago[unroll] Tidy up the integer we use to accumululate the number of
Chandler Carruth [Fri, 13 Feb 2015 02:10:56 +0000 (02:10 +0000)]
[unroll] Tidy up the integer we use to accumululate the number of
instructions optimized. NFC, just separating this out from the
functionality changing commit.

llvm-svn: 229026

9 years agoAsmWriter/Bitcode: MDImportedEntity
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:46:02 +0000 (01:46 +0000)]
AsmWriter/Bitcode: MDImportedEntity

llvm-svn: 229025

9 years agoAsmWriter/Bitcode: MDObjCProperty
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:43:22 +0000 (01:43 +0000)]
AsmWriter/Bitcode: MDObjCProperty

llvm-svn: 229024

9 years agoAsmWriter/Bitcode: MDExpression
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:42:09 +0000 (01:42 +0000)]
AsmWriter/Bitcode: MDExpression

llvm-svn: 229023

9 years agoAsmWriter/Bitcode: MDLocalVariable
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:39:44 +0000 (01:39 +0000)]
AsmWriter/Bitcode: MDLocalVariable

llvm-svn: 229022

9 years agoFix the build, I forgot to check that UnitTests still built.
Zachary Turner [Fri, 13 Feb 2015 01:39:22 +0000 (01:39 +0000)]
Fix the build, I forgot to check that UnitTests still built.

llvm-svn: 229021

9 years agoAsmWriter/Bitcode: MDGlobalVariable
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:35:40 +0000 (01:35 +0000)]
AsmWriter/Bitcode: MDGlobalVariable

llvm-svn: 229020

9 years agoAsmWriter/Bitcode: MDTemplate{Type,Value}Parameter
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:34:32 +0000 (01:34 +0000)]
AsmWriter/Bitcode: MDTemplate{Type,Value}Parameter

llvm-svn: 229019

9 years agoAsmWriter/Bitcode: MDNamespace
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:32:09 +0000 (01:32 +0000)]
AsmWriter/Bitcode: MDNamespace

llvm-svn: 229018

9 years agoAsmWriter/Bitcode: MDLexicalBlockFile
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:30:42 +0000 (01:30 +0000)]
AsmWriter/Bitcode: MDLexicalBlockFile

llvm-svn: 229017

9 years agoAsmWriter/Bitcode: MDLexicalBlock
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:29:28 +0000 (01:29 +0000)]
AsmWriter/Bitcode: MDLexicalBlock

llvm-svn: 229016

9 years agoAsmWriter: MDSubprogram: Recognize DW_VIRTUALITY in 'virtuality'
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:28:16 +0000 (01:28 +0000)]
AsmWriter: MDSubprogram: Recognize DW_VIRTUALITY in 'virtuality'

llvm-svn: 229015

9 years agoAsmWriter/Bitcode: MDSubprogram
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:26:47 +0000 (01:26 +0000)]
AsmWriter/Bitcode: MDSubprogram

llvm-svn: 229014

9 years agoAsmWriter/Bitcode: MDCompileUnit
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:25:10 +0000 (01:25 +0000)]
AsmWriter/Bitcode: MDCompileUnit

llvm-svn: 229013

9 years agoImprove llvm-pdbdump output display.
Zachary Turner [Fri, 13 Feb 2015 01:23:51 +0000 (01:23 +0000)]
Improve llvm-pdbdump output display.

This patch adds a number of improvements to llvm-pdbdump.

1) Dumping of the entire global scope, and not only those
   symbols that live in individual compilands.
2) Prepend class name to member functions and data
3) Improved display of bitfields.
4) Support for dumping more kinds of data symbols.

llvm-svn: 229012

9 years agoAsmWriter/Bitcode: MDSubroutineType
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:22:59 +0000 (01:22 +0000)]
AsmWriter/Bitcode: MDSubroutineType

llvm-svn: 229011

9 years agoAsmWriter: MDCompositeType: Recognize DW_LANG in 'runtimeLang'
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:21:25 +0000 (01:21 +0000)]
AsmWriter: MDCompositeType: Recognize DW_LANG in 'runtimeLang'

llvm-svn: 229010

9 years agoAsmWriter/Bitcode: MDDerivedType and MDCompositeType
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:20:38 +0000 (01:20 +0000)]
AsmWriter/Bitcode: MDDerivedType and MDCompositeType

llvm-svn: 229009

9 years agoAdd a ModuleList::ForEach(...) which takes the module list mutex calls the std::funct...
Greg Clayton [Fri, 13 Feb 2015 01:19:24 +0000 (01:19 +0000)]
Add a ModuleList::ForEach(...) which takes the module list mutex calls the std::function argument with each module. If you return true in the callback, iteration will continue, if you return false, iteration will stop and the lock will be released.

<rdar://problem/19213054>

llvm-svn: 229008

9 years agoAsmWriter/Bitcode: MDFile
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:19:14 +0000 (01:19 +0000)]
AsmWriter/Bitcode: MDFile

llvm-svn: 229007

9 years agoAsmWriter: MDBasicType: Recognize DW_ATE in 'encoding'
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:17:35 +0000 (01:17 +0000)]
AsmWriter: MDBasicType: Recognize DW_ATE in 'encoding'

llvm-svn: 229006

9 years agoAsmWriter/Bitcode: MDBasicType
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:14:58 +0000 (01:14 +0000)]
AsmWriter/Bitcode: MDBasicType

llvm-svn: 229005

9 years agoAsmWriter/Bitcode: MDEnumerator
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:14:11 +0000 (01:14 +0000)]
AsmWriter/Bitcode: MDEnumerator

llvm-svn: 229004

9 years agoAsmWriter/Bitcode: MDSubrange
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:10:38 +0000 (01:10 +0000)]
AsmWriter/Bitcode: MDSubrange

llvm-svn: 229003

9 years agoIR: Add MDExpression::ExprOperand
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:07:46 +0000 (01:07 +0000)]
IR: Add MDExpression::ExprOperand

Port `DIExpression::Operand` over to `MDExpression::ExprOperand`.  The
logic is needed directly in `MDExpression` to support printing in
assembly.

llvm-svn: 229002

9 years agoSupport: Add dwarf::getOperationEncoding()
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:05:00 +0000 (01:05 +0000)]
Support: Add dwarf::getOperationEncoding()

llvm-svn: 229001

9 years agoSupport: Rewrite LocationAtom and OperationEncodingString(), NFC
Duncan P. N. Exon Smith [Fri, 13 Feb 2015 01:04:08 +0000 (01:04 +0000)]
Support: Rewrite LocationAtom and OperationEncodingString(), NFC

Use `Dwarf.def` more.

llvm-svn: 229000

9 years ago[LinkModules] Change the way ModuleLinker merges triples.
Akira Hatanaka [Fri, 13 Feb 2015 00:40:41 +0000 (00:40 +0000)]
[LinkModules] Change the way ModuleLinker merges triples.

This commit makes the following changes:

- Stop issuing a warning when the triples' string representations do not match
  exactly if the Triple objects generated from the strings compare equal.

- On Apple platforms, choose the triple that has the larger minimum version
  number.

rdar://problem/16743513

Differential Revision: http://reviews.llvm.org/D7591

llvm-svn: 228999

9 years agoPPCFrameLowering's FramePointerOffset can be computed at initialization
Eric Christopher [Fri, 13 Feb 2015 00:39:38 +0000 (00:39 +0000)]
PPCFrameLowering's FramePointerOffset can be computed at initialization
time. Do so.

llvm-svn: 228998

9 years agoThe TOC save offset can be computed at compile time, do so and
Eric Christopher [Fri, 13 Feb 2015 00:39:36 +0000 (00:39 +0000)]
The TOC save offset can be computed at compile time, do so and
propagate changes.

llvm-svn: 228997

9 years agoThe return save offset can be computed at initialization time - do
Eric Christopher [Fri, 13 Feb 2015 00:39:27 +0000 (00:39 +0000)]
The return save offset can be computed at initialization time - do
so and save the value.

llvm-svn: 228996

9 years agoTestcase for r228988.
Michael Zolotukhin [Fri, 13 Feb 2015 00:35:45 +0000 (00:35 +0000)]
Testcase for r228988.

llvm-svn: 228995

9 years ago[unroll] Don't use a map from pointer to bool. Use a set.
Chandler Carruth [Fri, 13 Feb 2015 00:29:39 +0000 (00:29 +0000)]
[unroll] Don't use a map from pointer to bool. Use a set.

This is much more efficient. In particular, the query with the user
instruction has to insert a false for every missing instruction into the
set. This is just a cleanup a long the way to fixing the underlying
algorithm problems here.

llvm-svn: 228994

9 years agoModularize.cpp: Simplify. Vector may be aware of ranged-for.
NAKAMURA Takumi [Fri, 13 Feb 2015 00:28:32 +0000 (00:28 +0000)]
Modularize.cpp: Simplify. Vector may be aware of ranged-for.

llvm-svn: 228993

9 years agoModularize.cpp: Prune CRLFs.
NAKAMURA Takumi [Fri, 13 Feb 2015 00:28:26 +0000 (00:28 +0000)]
Modularize.cpp: Prune CRLFs.

llvm-svn: 228992

9 years agoclang-tools-extra/test/modularize/NoProblemsList.modularize: Unbreak test.
NAKAMURA Takumi [Fri, 13 Feb 2015 00:28:21 +0000 (00:28 +0000)]
clang-tools-extra/test/modularize/NoProblemsList.modularize: Unbreak test.

Don't expect the list were on the current directory.

llvm-svn: 228991

9 years agoMark clang/test/CodeGen/exceptions-seh-leave.c as REQUIRES:asserts, for now.
NAKAMURA Takumi [Fri, 13 Feb 2015 00:24:21 +0000 (00:24 +0000)]
Mark clang/test/CodeGen/exceptions-seh-leave.c as REQUIRES:asserts, for now.

FIXME: Rewrite CHECKs for unnamed BBs and Insts.
llvm-svn: 228990

9 years agollvm/test/Transforms/LoopVectorize/PowerPC/small-loop-rdx.ll REQUIRES +Asserts due...
NAKAMURA Takumi [Fri, 13 Feb 2015 00:21:34 +0000 (00:21 +0000)]
llvm/test/Transforms/LoopVectorize/PowerPC/small-loop-rdx.ll REQUIRES +Asserts due to -debug.

llvm-svn: 228989

9 years agoPrevent division by 0.
Michael Zolotukhin [Fri, 13 Feb 2015 00:17:03 +0000 (00:17 +0000)]
Prevent division by 0.

When we try to estimate number of potentially removed instructions in
loop unroller, we analyze first N iterations and then scale the
computed number by TripCount/N. We should bail out early if N is 0.

llvm-svn: 228988

9 years ago[unroll] Update the new analysis logic from r228265 to use modern coding
Chandler Carruth [Fri, 13 Feb 2015 00:00:24 +0000 (00:00 +0000)]
[unroll] Update the new analysis logic from r228265 to use modern coding
conventions for function names consistently. Some were already using
this but not all.

llvm-svn: 228987

9 years agoSEH: Use the SEHTryEpilogueStack instead of a separate bool
Reid Kleckner [Thu, 12 Feb 2015 23:40:45 +0000 (23:40 +0000)]
SEH: Use the SEHTryEpilogueStack instead of a separate bool

We don't need a bool to track this now that we have a stack for it.

llvm-svn: 228982

9 years agoMove the test for zero-length into the char_traits (from string_view). Add tests...
Marshall Clow [Thu, 12 Feb 2015 23:34:52 +0000 (23:34 +0000)]
Move the test for zero-length into the char_traits (from string_view). Add tests to char_traits specializations

llvm-svn: 228981

9 years agoAdd support for having multiple sections with the same name and comdat.
Rafael Espindola [Thu, 12 Feb 2015 23:29:51 +0000 (23:29 +0000)]
Add support for having multiple sections with the same name and comdat.

Using this in combination with -ffunction-sections allows LLVM to output a .o
file with mulitple sections named .text. This saves space by avoiding long
unique names of the form .text.<C++ mangled name>.

llvm-svn: 228980

9 years agoX86: Don't crash if we can't decode the pshufb mask
David Majnemer [Thu, 12 Feb 2015 23:26:26 +0000 (23:26 +0000)]
X86: Don't crash if we can't decode the pshufb mask

Constant pool entries are uniqued by their contents regardless of their
type.  This means that a pshufb can have a shuffle mask which isn't a
simple array of bytes.

The code path which attempts to decode the mask didn't check for
failure, causing PR22559.

llvm-svn: 228979

9 years ago[modules] When collecting declarations to complete a redeclaration chain for an
Richard Smith [Thu, 12 Feb 2015 23:21:45 +0000 (23:21 +0000)]
[modules] When collecting declarations to complete a redeclaration chain for an
entity, put the originally-canonical decl IDs in the right places in the redecl
chain rather than reordering them all to the start. If we don't ensure that the
redecl chain order is consistent with the topological module order, we can fail
to make a declaration visible if later declarations are in more IDNSs than
earlier ones (for instance, because the earlier decls are invisible friends).

llvm-svn: 228978

9 years ago[ms] Implement codegen for __leave.
Nico Weber [Thu, 12 Feb 2015 23:16:11 +0000 (23:16 +0000)]
[ms] Implement codegen for __leave.

Reviewed at http://reviews.llvm.org/D7575

llvm-svn: 228977

9 years agoLearn that __DATA,__objc_classrefs is not atomized via symbols.
Rafael Espindola [Thu, 12 Feb 2015 23:11:59 +0000 (23:11 +0000)]
Learn that __DATA,__objc_classrefs is not atomized via symbols.

This should hopefully fix objc on AArch64.

llvm-svn: 228976

9 years agoI had recently added a new SBFrame::GetVariables() overload with yet another bool...
Enrico Granata [Thu, 12 Feb 2015 23:09:17 +0000 (23:09 +0000)]
I had recently added a new SBFrame::GetVariables() overload with yet another bool argument

We talked about it internally - and came to the conclusion that it's time to have an options class

This commit adds an SBVariablesOptions class and goes through all the required dance

llvm-svn: 228975

9 years agoAdd missing override.
David Blaikie [Thu, 12 Feb 2015 22:58:53 +0000 (22:58 +0000)]
Add missing override.

llvm-svn: 228974

9 years agoChange max interleave factor to 12 for POWER7 and POWER8.
Olivier Sallenave [Thu, 12 Feb 2015 22:57:58 +0000 (22:57 +0000)]
Change max interleave factor to 12 for POWER7 and POWER8.

llvm-svn: 228973

9 years agoEnsure integer domain on general shuffle stack folding tests
Simon Pilgrim [Thu, 12 Feb 2015 22:47:45 +0000 (22:47 +0000)]
Ensure integer domain on general shuffle stack folding tests

llvm-svn: 228972

9 years agoPECOFF: Fix dummy symbol table in executable.
Rui Ueyama [Thu, 12 Feb 2015 22:46:16 +0000 (22:46 +0000)]
PECOFF: Fix dummy symbol table in executable.

If the name field of a symbol table entry is all zero, it's interpreted
as it's pointing to the beginning of the string table. The first four
bytes of the string table is the size field, so dumpbin dumps that number
as an ASCIZ string.

This patch fills a dummy value to name field.

llvm-svn: 228971

9 years agoRemove typedef of a pointer type used in a gep to simplify migration of geps to a...
David Blaikie [Thu, 12 Feb 2015 22:45:25 +0000 (22:45 +0000)]
Remove typedef of a pointer type used in a gep to simplify migration of geps to a typeless-pointer future.

I'd modify my migration tool to account for this, but this is the only
instance of a typedef'd pointer type to a gep I found in the whole test
suite, so it didn't seem worthwhile.

llvm-svn: 228970

9 years ago[SDAG] Don't try to use FP_EXTEND/FP_ROUND for int<->fp promotions
Hal Finkel [Thu, 12 Feb 2015 22:43:52 +0000 (22:43 +0000)]
[SDAG] Don't try to use FP_EXTEND/FP_ROUND for int<->fp promotions

The PowerPC backend has long promoted some floating-point vector operations
(such as select) to integer vector operations. Unfortunately, this behavior was
broken by r216555. When using FP_EXTEND/FP_ROUND for promotions, we must check
that both the old and new types are floating-point types. Otherwise, we must
use BITCAST as we did prior to r216555 for everything.

llvm-svn: 228969

9 years ago[ELF] Insert wrap symbols into a set.
Shankar Easwaran [Thu, 12 Feb 2015 22:37:27 +0000 (22:37 +0000)]
[ELF] Insert wrap symbols into a set.

Symbols specified by --wrap was being inserted into a vector, change this to
insert into a set, so that we have unique entries.

llvm-svn: 228968

9 years agoIR: Stop abusing DW_TAG_base_type for compile unit arrays
Duncan P. N. Exon Smith [Thu, 12 Feb 2015 21:52:11 +0000 (21:52 +0000)]
IR: Stop abusing DW_TAG_base_type for compile unit arrays

The sub-arrays for compile units have for a long time been initialized
to distinct temporary nodes with the `DW_TAG_base_type` tag, with no
other operands.  These invalid `DIBasicType`s are later replaced with
appropriate arrays.

This seems like a poor man's assertion that the arrays do eventually get
replaced.  These days, temporaries in the graph will cause assertions
when writing bitcode or assembly, so this isn't necessary.  Use
temporary empty tuples instead.

Note that the whole idea of using temporaries and then replacing them
later is wasteful here.  We never actually want to merge compile units
by uniquing based on content.  Compile units should use `getDistinct()`
instead of `get()`, and then their operands can be freely replaced later
on.

llvm-svn: 228967

9 years agoMangle the IsSystem bit into the .pcm file name
Ben Langmuir [Thu, 12 Feb 2015 21:51:31 +0000 (21:51 +0000)]
Mangle the IsSystem bit into the .pcm file name

When mangling the module map path into a .pcm file name, also mangle the
IsSystem bit, which can also depend on the header search paths. For
example, the user may change from -I to -isystem.  This can affect
diagnostics in the importing TU.

llvm-svn: 228966

9 years agoAttempt to fix the build again.
Zachary Turner [Thu, 12 Feb 2015 21:25:58 +0000 (21:25 +0000)]
Attempt to fix the build again.

llvm-svn: 228964

9 years agoFix typoo.
Richard Smith [Thu, 12 Feb 2015 21:23:20 +0000 (21:23 +0000)]
Fix typoo.

llvm-svn: 228963

9 years agoAttempt to fix Linux builds after r228960.
Zachary Turner [Thu, 12 Feb 2015 21:17:07 +0000 (21:17 +0000)]
Attempt to fix Linux builds after r228960.

llvm-svn: 228962

9 years agoRemove mostly unused setters.
Rafael Espindola [Thu, 12 Feb 2015 21:16:34 +0000 (21:16 +0000)]
Remove mostly unused setters.

Most of the code was setting the TargetOptions directly.

llvm-svn: 228961

9 years agoAdd concrete type overloads to PDBSymbol::findChildren().
Zachary Turner [Thu, 12 Feb 2015 21:09:24 +0000 (21:09 +0000)]
Add concrete type overloads to PDBSymbol::findChildren().

Frequently you only want to iterate over children of a specific
type (e.g. functions).  Previously you would get back a generic
interface that allowed iteration over the base symbol type,
which you would have to dyn_cast<> each one of.  With this patch,
we allow the user to specify the concrete type as a template
parameter, and it will return an iterator which returns instances
of the concrete type directly.

llvm-svn: 228960

9 years agoSema: Semantically check _Atomic-qualified pointers
David Majnemer [Thu, 12 Feb 2015 21:07:34 +0000 (21:07 +0000)]
Sema: Semantically check _Atomic-qualified pointers

This fixes PR22568.

llvm-svn: 228959

9 years agoAdd bulk of returning of values to Mips fast-isel
Reed Kotler [Thu, 12 Feb 2015 21:05:12 +0000 (21:05 +0000)]
Add bulk of returning of values to Mips fast-isel

Summary:
Implement the bulk of returning values in Mips fast-isel

Test Plan:
reatabi.ll

Passes test-suite at -O0,-O2 and with mips32r2 and mips32r1.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits, aemerson, rfuhler

Differential Revision: http://reviews.llvm.org/D5920

llvm-svn: 228958

9 years agoFix a crash in the assumption cache when inlining indirect function calls
Bjorn Steinbrink [Thu, 12 Feb 2015 21:04:22 +0000 (21:04 +0000)]
Fix a crash in the assumption cache when inlining indirect function calls

Summary:
Instances of the AssumptionCache are per function, so we can't re-use
the same AssumptionCache instance when recursing in the CallAnalyzer to
analyze a different function. Instead we have to pass the
AssumptionCacheTracker to the CallAnalyzer so it can get the right
AssumptionCache on demand.

Reviewers: hfinkel

Subscribers: llvm-commits, hans

Differential Revision: http://reviews.llvm.org/D7533

llvm-svn: 228957

9 years agoUpdate test case.
Benjamin Kramer [Thu, 12 Feb 2015 20:40:19 +0000 (20:40 +0000)]
Update test case.

llvm-svn: 228956

9 years agoPECOFF: Don't parse files in .drectve asynchronously.
Rui Ueyama [Thu, 12 Feb 2015 20:33:40 +0000 (20:33 +0000)]
PECOFF: Don't parse files in .drectve asynchronously.

Looks like there's a race condition around here that caused LLD to crash
on Windows. Currently we are parsing libraries specified by .drectve section
asynchronously, and something is wrong in that process. Disable the feature
for now to make buildbots happy.

llvm-svn: 228955

9 years agoInstCombine: Allow folding of xor into icmp by changing the predicate for vectors
Benjamin Kramer [Thu, 12 Feb 2015 20:26:46 +0000 (20:26 +0000)]
InstCombine: Allow folding of xor into icmp by changing the predicate for vectors

The loop vectorizer can create this pattern.

llvm-svn: 228954

9 years agoRelaxed over-zealous alignment requirement for VEX-encoded AES instructions
Simon Pilgrim [Thu, 12 Feb 2015 20:01:03 +0000 (20:01 +0000)]
Relaxed over-zealous alignment requirement for VEX-encoded AES instructions

llvm-svn: 228953

9 years agoFixed a problem that UBSAN found, where we were calling memcmp(null, p, 0) - which...
Marshall Clow [Thu, 12 Feb 2015 19:58:06 +0000 (19:58 +0000)]
Fixed a problem that UBSAN found, where we were calling memcmp(null, p, 0) - which is undefined behavior

llvm-svn: 228952

9 years agoAdd a testcase for r228432.
Michael Zolotukhin [Thu, 12 Feb 2015 19:57:24 +0000 (19:57 +0000)]
Add a testcase for r228432.

llvm-svn: 228951

9 years agoTry to fix the MSVC build.
Benjamin Kramer [Thu, 12 Feb 2015 19:53:49 +0000 (19:53 +0000)]
Try to fix the MSVC build.

0xFFFFFFFFFFFFFFFFLL doesn't fit in a long long so it should have
type 'unsigned long long'. MSVC thinks it's a (signed) __int64.

llvm-svn: 228950

9 years agogold-plugin: delete the output file for OT_DISABLE
Michael Kuperstein [Thu, 12 Feb 2015 18:21:50 +0000 (18:21 +0000)]
gold-plugin: delete the output file for OT_DISABLE

bfd creates the output file early, so calling exit(0) is not enough, the file needs to be explicitly deleted.

Patch by: H.J. Lu <hjl.tools@gmail.com>

llvm-svn: 228946

9 years ago[clang-tidy] Fixed a false positive case in misc-inefficient-algorithm checker.
Gabor Horvath [Thu, 12 Feb 2015 18:19:34 +0000 (18:19 +0000)]
[clang-tidy] Fixed a false positive case in misc-inefficient-algorithm checker.

llvm-svn: 228945

9 years agoAdd Initialize/Terminate method to Platform base plugin
Tamas Berghammer [Thu, 12 Feb 2015 18:18:27 +0000 (18:18 +0000)]
Add Initialize/Terminate method to Platform base plugin

Platform holds a smart pointer to each platform object created in a
static variable what cause the platform destructors called only on
program exit when other static variables are not availables. With this
change the destructors are called on lldb_private::Terminate()

+ Fix DebuggerRefCount handling in ScriptInterpreterPython

Differential Revision: http://reviews.llvm.org/D7590

llvm-svn: 228944

9 years agoCreate new platform: remote-android
Tamas Berghammer [Thu, 12 Feb 2015 18:13:44 +0000 (18:13 +0000)]
Create new platform: remote-android

* Create new platform plugin for lldb
* Create HostInfo class for android
* Create ProcessLauncher for android

Differential Revision: http://reviews.llvm.org/D7584

llvm-svn: 228943

9 years agoFix broken test in separate build tree.
John Thompson [Thu, 12 Feb 2015 17:52:28 +0000 (17:52 +0000)]
Fix broken test in separate build tree.

llvm-svn: 228941

9 years agoOn ELF, put PIC jump tables in a non executable section.
Rafael Espindola [Thu, 12 Feb 2015 17:46:49 +0000 (17:46 +0000)]
On ELF, put PIC jump tables in a non executable section.

Fixes PR22558.

llvm-svn: 228939

9 years agoAdd an -A option to "break set -p" to search all files for matches. Also add the...
Jim Ingham [Thu, 12 Feb 2015 17:37:46 +0000 (17:37 +0000)]
Add an -A option to "break set -p" to search all files for matches.  Also add the version of
SBTarget::BreakpointCreateBySourceRegex that takes file spec lists to the Python interface,
and add a test for this.

<rdar://problem/19805037>

llvm-svn: 228938

9 years agoPut each jump table in an independent section if the function is too.
Rafael Espindola [Thu, 12 Feb 2015 17:16:46 +0000 (17:16 +0000)]
Put each jump table in an independent section if the function is too.

This allows the linker to GC both, fixing pr22557.

llvm-svn: 228937

9 years agoFix accidental bit flip.
Benjamin Kramer [Thu, 12 Feb 2015 16:30:00 +0000 (16:30 +0000)]
Fix accidental bit flip.

llvm-svn: 228936

9 years agoAdded support for multiple header list files, as a precursor for when we need to...
John Thompson [Thu, 12 Feb 2015 16:22:09 +0000 (16:22 +0000)]
Added support for multiple header list files, as a precursor for when we need to load multiple module maps.

llvm-svn: 228935