platform/upstream/llvm.git
9 years agoCreate a default rune table for libc++. Initial setting - never enabled. The expectat...
Marshall Clow [Wed, 4 Mar 2015 16:10:14 +0000 (16:10 +0000)]
Create a default rune table for libc++. Initial setting - never enabled. The expectation is that some targets (Android, cough) will enable it. Note that this is an implementation detail, not an interface change.

llvm-svn: 231252

9 years ago[Modules] Fix crash in Preprocessor::getLastMacroWithSpelling().
Argyrios Kyrtzidis [Wed, 4 Mar 2015 16:03:07 +0000 (16:03 +0000)]
[Modules] Fix crash in Preprocessor::getLastMacroWithSpelling().

Macro names that got undefined inside a module may not have their MacroInfo set.

llvm-svn: 231251

9 years agoMutate TargetLowering::shouldExpandAtomicRMWInIR to specifically dictate how AtomicRM...
JF Bastien [Wed, 4 Mar 2015 15:47:57 +0000 (15:47 +0000)]
Mutate TargetLowering::shouldExpandAtomicRMWInIR to specifically dictate how AtomicRMWInsts are expanded.

Summary:
In PNaCl, most atomic instructions have their own @llvm.nacl.atomic.* function, each one, with a few exceptions, represents a consistent behaviour across all NaCl-supported targets. Unfortunately, the atomic RMW operations nand, [u]min, and [u]max aren't directly represented by any such @llvm.nacl.atomic.* function. This patch refines shouldExpandAtomicRMWInIR in TargetLowering so that a future `Le32TargetLowering` class can selectively inform the caller how the target desires the atomic RMW instruction to be expanded (ie via load-linked/store-conditional for ARM/AArch64, via cmpxchg for X86/others?, or not at all for Mips) if at all.

This does not represent a behavioural change and as such no tests were added.

Patch by: Richard Diamond.

Reviewers: jfb

Reviewed By: jfb

Subscribers: jfb, aemerson, t.p.northover, llvm-commits

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

llvm-svn: 231250

9 years ago[mips][microMIPS] Make usage of ADDU16 and SUBU16 by code generator
Jozef Kolek [Wed, 4 Mar 2015 15:47:42 +0000 (15:47 +0000)]
[mips][microMIPS] Make usage of ADDU16 and SUBU16 by code generator

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

llvm-svn: 231249

9 years agoRevert "[IAS] Teach -cc1as about the 'target-abi' option."
Daniel Jasper [Wed, 4 Mar 2015 15:02:22 +0000 (15:02 +0000)]
Revert "[IAS] Teach -cc1as about the 'target-abi' option."

This reverts commit 0e41c8faeff75614cf4627533331d780ba3db030.

This is breaking buildbots:
http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/4668/

llvm-svn: 231248

9 years agoPrevent test from writing files.
Daniel Jasper [Wed, 4 Mar 2015 15:02:17 +0000 (15:02 +0000)]
Prevent test from writing files.

llvm-svn: 231247

9 years ago[PowerPC] Remove unnecessary and incomplete commentary
Bill Schmidt [Wed, 4 Mar 2015 14:56:05 +0000 (14:56 +0000)]
[PowerPC] Remove unnecessary and incomplete commentary

This "itinerary class map" in PPCSchedule.td is incomplete and
redundant with the actual code.  As it provides no value, we've
decided to remove it.

No functional change.

llvm-svn: 231246

9 years agoAdjust the changes from r230255 to bail out if the backend can't lower
Joerg Sonnenberger [Wed, 4 Mar 2015 14:25:35 +0000 (14:25 +0000)]
Adjust the changes from r230255 to bail out if the backend can't lower
__builtin_setjmp/__builtin_longjmp and don't fall back to the libc
functions.

llvm-svn: 231245

9 years ago[IAS] Teach -cc1as about the 'target-abi' option.
Toma Tabacu [Wed, 4 Mar 2015 14:24:25 +0000 (14:24 +0000)]
[IAS] Teach -cc1as about the 'target-abi' option.

Summary:
When using the IAS from clang, the 'target-abi' option gets passed to cc1as, but cc1as doesn't know about it and gives an "unknown argument" error.

This is fixed by adding the 'CC1AsOption' flag to the 'target-abi' option in CC1Options.td.

Reviewers: atanasyan, echristo, dsanders

Reviewed By: dsanders

Subscribers: cfe-commits

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

llvm-svn: 231244

9 years ago[X86][FastISel] Simplify the logic in method X86SelectSIToFP.
Andrea Di Biagio [Wed, 4 Mar 2015 14:23:25 +0000 (14:23 +0000)]
[X86][FastISel] Simplify the logic in method X86SelectSIToFP.

The target-independent selection algorithm in FastISel already knows how
to select a SINT_TO_FP if the target is SSE but not AVX.

On targets that have SSE but not AVX, the tablegen'd 'fastEmit' functions
for ISD::SINT_TO_FP know how to select instruction X86::CVTSI2SSrr
(for an i32 to f32 conversion) and X86::CVTSI2SDrr (for an i32 to f64
conversion).

This patch simplifies the logic in method X86SelectSIToFP knowing that
the code would not be reachable if the subtarget doesn't have AVX.
No functional change intended.

llvm-svn: 231243

9 years agoMove one more diagnostic into the new -Wformat-pedantic group.
Daniel Jasper [Wed, 4 Mar 2015 14:18:20 +0000 (14:18 +0000)]
Move one more diagnostic into the new -Wformat-pedantic group.

This was apparently overlooked in r231211.

llvm-svn: 231242

9 years agoasan: do not instrument direct inbounds accesses to stack variables
Dmitry Vyukov [Wed, 4 Mar 2015 13:27:53 +0000 (13:27 +0000)]
asan: do not instrument direct inbounds accesses to stack variables

Do not instrument direct accesses to stack variables that can be
proven to be inbounds, e.g. accesses to fields of structs on stack.

But it eliminates 33% of instrumentation on webrtc/modules_unittests
(number of memory accesses goes down from 290152 to 193998) and
reduces binary size by 15% (from 74M to 64M) and improved compilation time by 6-12%.

The optimization is guarded by asan-opt-stack flag that is off by default.

http://reviews.llvm.org/D7583

llvm-svn: 231241

9 years ago[mips] Rename the LA/LI/DLI TableGen definitions and classes. NFC.
Toma Tabacu [Wed, 4 Mar 2015 13:01:14 +0000 (13:01 +0000)]
[mips] Rename the LA/LI/DLI TableGen definitions and classes. NFC.

Summary:
Use more reasonable names for these pseudo-instructions.
As there's only one definition tied to any one of these classes, I named them with abbreviated versions of their respective class' name.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

llvm-svn: 231240

9 years ago[mips] Keep the parameter list of Filler::searchRange() consistent. NFC.
Vasileios Kalintiris [Wed, 4 Mar 2015 12:37:58 +0000 (12:37 +0000)]
[mips] Keep the parameter list of Filler::searchRange() consistent. NFC.

Summary:
Move the "Filler" parameter to the end of the parameter list as it is,
conceptually, the only output parameter of that function.

Reviewers: dsanders

Subscribers: llvm-commits

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

llvm-svn: 231239

9 years ago[MBP] Fix a really horrible bug in MachineBlockPlacement, but behind
Chandler Carruth [Wed, 4 Mar 2015 12:18:08 +0000 (12:18 +0000)]
[MBP] Fix a really horrible bug in MachineBlockPlacement, but behind
a flag for now.

First off, thanks to Daniel Jasper for really pointing out the issue
here. It's been here forever (at least, I think it was there when
I first wrote this code) without getting really noticed or fixed.

The key problem is what happens when two reasonably common patterns
happen at the same time: we outline multiple cold regions of code, and
those regions in turn have diamonds or other CFGs for which we can't
just topologically lay them out. Consider some C code that looks like:

  if (a1()) { if (b1()) c1(); else d1(); f1(); }
  if (a2()) { if (b2()) c2(); else d2(); f2(); }
  done();

Now consider the case where a1() and a2() are unlikely to be true. In
that case, we might lay out the first part of the function like:

  a1, a2, done;

And then we will be out of successors in which to build the chain. We go
to find the best block to continue the chain with, which is perfectly
reasonable here, and find "b1" let's say. Laying out successors gets us
to:

  a1, a2, done; b1, c1;

At this point, we will refuse to lay out the successor to c1 (f1)
because there are still un-placed predecessors of f1 and we want to try
to preserve the CFG structure. So we go get the next best block, d1.

... wait for it ...

Except that the next best block *isn't* d1. It is b2! d1 is waaay down
inside these conditionals. It is much less important than b2. Except
that this is exactly what we didn't want. If we keep going we get the
entire set of the rest of the CFG *interleaved*!!!

  a1, a2, done; b1, c1; b2, c2; d1, f1; d2, f2;

So we clearly need a better strategy here. =] My current favorite
strategy is to actually try to place the block whose predecessor is
closest. This very simply ensures that we unwind these kinds of CFGs the
way that is natural and fitting, and should minimize the number of cache
lines instructions are spread across.

It also happens to be *dead simple*. It's like the datastructure was
specifically set up for this use case or something. We only push blocks
onto the work list when the last predecessor for them is placed into the
chain. So the back of the worklist *is* the nearest next block.

Unfortunately, a change like this is going to cause *soooo* many
benchmarks to swing wildly. So for now I'm adding this under a flag so
that we and others can validate that this is fixing the problems
described, that it seems possible to enable, and hopefully that it fixes
more of our problems long term.

llvm-svn: 231238

9 years ago[mips] Specify the correct value type when combining a CMovFP node.
Vasileios Kalintiris [Wed, 4 Mar 2015 12:10:18 +0000 (12:10 +0000)]
[mips] Specify the correct value type when combining a CMovFP node.

This commit fixes a bug introduced in r230956 where we were creating
CMovFP_{T,F} nodes with multiple return value types (one for each operand).
With this change the return value type of the new node is the same as the
value type of the True/False operands of the original node.

llvm-svn: 231237

9 years ago[clang-tidy] Output more diagnostics in check_clang_tidy.sh
Alexander Kornienko [Wed, 4 Mar 2015 12:07:50 +0000 (12:07 +0000)]
[clang-tidy] Output more diagnostics in check_clang_tidy.sh

Print clang-tidy output and fixes applied.

llvm-svn: 231236

9 years agoFix build on OS X after r231202
Ilia K [Wed, 4 Mar 2015 12:05:24 +0000 (12:05 +0000)]
Fix build on OS X after r231202

llvm-svn: 231235

9 years agoSet the signals based on the OS in the qHostInfo packet
Tamas Berghammer [Wed, 4 Mar 2015 11:34:10 +0000 (11:34 +0000)]
Set the signals based on the OS in the qHostInfo packet

Setting it from the Target architecture cause problems when the target
archiutecture is filled just by examining the executable because in that
case the OS isn't set.

Differential revision: http://reviews.llvm.org/D8035

llvm-svn: 231234

9 years agoAdded long 'print-values' option for var-update MI command.
Ilia K [Wed, 4 Mar 2015 11:21:18 +0000 (11:21 +0000)]
Added long 'print-values' option for var-update MI command.

Summary:
The -var-update MI command should take the same print-values options as var-list children, however currently only the integer versions are supported.
Added --no-values, --all-values, and --simple-values long options.

See:
https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Variable-Objects.html#GDB_002fMI-Variable-Objects

Patch from ewan@codeplay.com

Reviewers: EwanCrawford

Subscribers: ki.stfu, lldb-commits

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

llvm-svn: 231233

9 years agoFix expectation for TestPlatformCommand.test_shell
Tamas Berghammer [Wed, 4 Mar 2015 11:18:34 +0000 (11:18 +0000)]
Fix expectation for TestPlatformCommand.test_shell

* Create expectation based on target platform
* Add custom expectation for remote android target

Differential revision: http://reviews.llvm.org/D8031

llvm-svn: 231232

9 years agoFix deadlock in operation thread in NativeProcessLinux
Tamas Berghammer [Wed, 4 Mar 2015 11:10:03 +0000 (11:10 +0000)]
Fix deadlock in operation thread in NativeProcessLinux

The deadlock occurred when the Attach or the Launch operation failed for
any reason.

Differential revision: http://reviews.llvm.org/D8030

llvm-svn: 231231

9 years agoAdd a flag to experiment with outlining optional branches.
Daniel Jasper [Wed, 4 Mar 2015 11:05:34 +0000 (11:05 +0000)]
Add a flag to experiment with outlining optional branches.

In a CFG with the edges A->B->C and A->C, B is an optional branch.

LLVM's default behavior is to lay the blocks out naturally, i.e. A, B,
C, in order to improve code locality and fallthroughs. However, if a
function contains many of those optional branches only a few of which
are taken, this leads to a lot of unnecessary icache misses. Moving B
out of line can work around this.

Review: http://reviews.llvm.org/D7719
llvm-svn: 231230

9 years agoUse the unified section list when generating a symbol table
Pavel Labath [Wed, 4 Mar 2015 10:28:15 +0000 (10:28 +0000)]
Use the unified section list when generating a symbol table

Summary:
Symbol table generation code was failing to take into account the debug symbols because
the object file was looking only into its own section list when doing the generation, even though
the debug symbols from another object file were correctly detected and loaded by the
SymbolVendor. This changes the code to use the unified section list, which fixes this problem.

Test Plan:
I do not intend do submit this yet since it causes (or more like, exposes) the issue
in D7884, but I wanted to put this out here, so that anyone who wants to take a look at it can do
so. (And I also wanted to know if this is the right approach to the problem :).

Reviewers: clayborg, zturner

Subscribers: lldb-commits

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

llvm-svn: 231229

9 years agoCorrectly resolve symbol names containing linker annotations
Pavel Labath [Wed, 4 Mar 2015 10:25:22 +0000 (10:25 +0000)]
Correctly resolve symbol names containing linker annotations

Summary:
Symbols in ELF files can be versioned, but LLDB currently does not understand these. This problem
becomes apparent once one loads glibc with debug info. Here (in the .symtab section) the versions
are embedded in the name (name@VERSION), which causes issues when evaluating expressions
referencing memcpy for example (current glibc contains memcpy@@GLIBC_2.14 and
memcpy@GLIBC_2.2.5).

This problem was not evident without debug symbols as the .dynsym section
stores the bare names and the actual versions are present in a separate section (.gnu.version_d),
which LLDB ignores. This resulted in two definitions of memcpy in the symbol table.

This patch adds support for storing annotated names to the Symbol class. If
Symbol.m_contains_linker_annotations is true then this symbol is annotated. Unannotated name can
be obtained by calling StripLinkerAnnotations on the corresponding ObjectFile. ObjectFileELF
implements this to strip @VERSION suffixes when requested. Symtab uses this function to add the
bare name as well as the annotated name to the name lookup table.

To preserve the size of the Symbol class, I had to steal one bit from the m_type field.

Test Plan:
This fixes TestExprHelpExamples.py when run with a glibc with debug symbols. Writing
an environment agnostic test case would require building a custom shared library with symbol
versions and testing symbol resolution against that, which is somewhat challenging.

Reviewers: clayborg, jingham

Subscribers: lldb-commits

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

llvm-svn: 231228

9 years agoFix PR22408 - LLVM producing AArch64 TLS relocations that GNU linkers cannot handle...
Kristof Beyls [Wed, 4 Mar 2015 09:12:08 +0000 (09:12 +0000)]
Fix PR22408 - LLVM producing AArch64 TLS relocations that GNU linkers cannot handle yet.

As is described at http://llvm.org/bugs/show_bug.cgi?id=22408, the GNU linkers
ld.bfd and ld.gold currently only support a subset of the whole range of AArch64
ELF TLS relocations. Furthermore, they assume that some of the code sequences to
access thread-local variables are produced in a very specific sequence.
When the sequence is not as the linker expects, it can silently mis-relaxe/mis-optimize
the instructions.
Even if that wouldn't be the case, it's good to produce the exact sequence,
as that ensures that linkers can perform optimizing relaxations.

This patch:

* implements support for 16MiB TLS area size instead of 4GiB TLS area size. Ideally clang
  would grow an -mtls-size option to allow support for both, but that's not part of this patch.
* by default doesn't produce local dynamic access patterns, as even modern ld.bfd and ld.gold
  linkers do not support the associated relocations. An option (-aarch64-elf-ldtls-generation)
  is added to enable generation of local dynamic code sequence, but is off by default.
* makes sure that the exact expected code sequence for local dynamic and general dynamic
  accesses is produced, by making use of a new pseudo instruction. The patch also removes
  two (AArch64ISD::TLSDESC_BLR, AArch64ISD::TLSDESC_CALL) pre-existing AArch64-specific pseudo
  SDNode instructions that are superseded by the new one (TLSDESC_CALLSEQ).

llvm-svn: 231227

9 years ago[Tablegen] Use correct result number variables with the pattern nodes they go with...
Craig Topper [Wed, 4 Mar 2015 09:04:54 +0000 (09:04 +0000)]
[Tablegen] Use correct result number variables with the pattern nodes they go with when handling SDTCisSameAs. No functional change as they are always both 0 unless you try to define a multi result type profile that uses SDTCisSame on one of the other results.

llvm-svn: 231226

9 years agoExplicitly default DenseMapTest::CtorTest::operator=
David Blaikie [Wed, 4 Mar 2015 07:57:45 +0000 (07:57 +0000)]
Explicitly default DenseMapTest::CtorTest::operator=

Using the implicit default copy assignment operator in the presence of a
user-declared copy ctor is deprecated in C++11.

llvm-svn: 231225

9 years agoRemove explicit RNSuccIterator copy assignment in favor of implicit default
David Blaikie [Wed, 4 Mar 2015 07:51:50 +0000 (07:51 +0000)]
Remove explicit RNSuccIterator copy assignment in favor of implicit default

Asserting that the source and destination iterators are from the same
region is unnecessary - there's no reason to disallow reassignment from
any regions, so long as they aren't compared.

llvm-svn: 231224

9 years agouse = default instead of {}
David Blaikie [Wed, 4 Mar 2015 07:35:04 +0000 (07:35 +0000)]
use = default instead of {}

llvm-svn: 231223

9 years agoMake format_object_base explicitly copyable, so format_objects can be copied without...
David Blaikie [Wed, 4 Mar 2015 07:35:02 +0000 (07:35 +0000)]
Make format_object_base explicitly copyable, so format_objects can be copied without relying on the implicit copy ctor

Use of the implicit copy ctor is deprecated in C++11 in the presence of
a user declared dtor.

llvm-svn: 231222

9 years agoDevirtualize ~parser<T> by making it protected in base classes and making derived...
David Blaikie [Wed, 4 Mar 2015 07:29:01 +0000 (07:29 +0000)]
Devirtualize ~parser<T> by making it protected in base classes and making derived classes final

These objects are never owned/destroyed polymorphically, so there's no
need for a virtual dtor.

llvm-svn: 231221

9 years agoAvoid copying parser objects
David Blaikie [Wed, 4 Mar 2015 07:28:59 +0000 (07:28 +0000)]
Avoid copying parser objects

Use of their copy members is deprecated since they have a user-declared
dtor.

llvm-svn: 231220

9 years ago[DAGCombine] Fix a bug in a BUILD_VECTOR combine
Michael Kuperstein [Wed, 4 Mar 2015 07:27:39 +0000 (07:27 +0000)]
[DAGCombine] Fix a bug in a BUILD_VECTOR combine

When trying to convert a BUILD_VECTOR into a shuffle, we try to split a single source vector that is twice as wide as the destination vector.
We can not do this when we also need the zero vector to create a blend.
This fixes PR22774.

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

llvm-svn: 231219

9 years agoMake OptionValue explicitly copyable
David Blaikie [Wed, 4 Mar 2015 07:09:53 +0000 (07:09 +0000)]
Make OptionValue explicitly copyable

Since OptionValue (& its base classes) have user-declared dtors, use of
the implicit copy ctor/assignment operator is deprecated in C++11.
Provide them explicitly (defaulted) to avoid depending on this
deprecated feature.

llvm-svn: 231218

9 years agoDevirtualize OptionValue::~OptionValue in favor of protected in the base, with final...
David Blaikie [Wed, 4 Mar 2015 06:57:14 +0000 (06:57 +0000)]
Devirtualize OptionValue::~OptionValue in favor of protected in the base, with final derived classes

These objects are never polymorphically owned, so there's no need for
virtual dtors - just make the dtor protected in the base classes, and
make the derived classes final.

llvm-svn: 231217

9 years ago[MC][Target] Implement support for R_X86_64_SIZE{32,64}.
Davide Italiano [Wed, 4 Mar 2015 06:49:39 +0000 (06:49 +0000)]
[MC][Target] Implement support for R_X86_64_SIZE{32,64}.

Differential Revision: D7990
Reviewed by: rafael, majnemer

llvm-svn: 231216

9 years ago[llvm-pdbdump] Display full enum definitions.
Zachary Turner [Wed, 4 Mar 2015 06:09:53 +0000 (06:09 +0000)]
[llvm-pdbdump] Display full enum definitions.

This will now display enum definitions both at the global
scope as well as nested inside of classes.  Additionally,
it will no longer display enums at the global scope if the
enum is nested.  Instead, it will omit the definition of
the enum globally and instead emit it in the corresponding
class definition.

llvm-svn: 231215

9 years agoRevert "[ADT] fail-fast iterators for DenseMap"
Chaoren Lin [Wed, 4 Mar 2015 06:05:37 +0000 (06:05 +0000)]
Revert "[ADT] fail-fast iterators for DenseMap"

This reverts commit 4b7263d855006988854036b4a4891fcf19aebe65.

r231125 http://reviews.llvm.org/D7931

This was causing many LLDB tests to fail on OS X, Linux, and FreeBSD.

https://bpaste.net/show/6a23e1f53623

llvm-svn: 231214

9 years agoAT.isValid() should come before AT.matchesType()
Seth Cantrell [Wed, 4 Mar 2015 05:58:08 +0000 (05:58 +0000)]
AT.isValid() should come before AT.matchesType()

llvm-svn: 231213

9 years agoMake File non-const in the resolver.
Rui Ueyama [Wed, 4 Mar 2015 04:36:46 +0000 (04:36 +0000)]
Make File non-const in the resolver.

File objects are not really const in the resolver. We set ordinals to
them and call beforeLink hooks. Also, File's member functions marked
as const are not really const. ArchiveFile never returns the same
member file twice, so it remembers files returned before. find() has
side effects.

In order to deal with the inconsistencies, we sprinkled const_casts
and marked member varaibles as mutable.

This patch removes const from there to reflect the reality.

llvm-svn: 231212

9 years agoAdd a format warning for "%p" with non-void* args
Seth Cantrell [Wed, 4 Mar 2015 03:12:10 +0000 (03:12 +0000)]
Add a format warning for "%p" with non-void* args

GCC -pedantic produces a format warning when the "%p" specifier is used with
arguments that are not void*. It's useful for portability to be able to
catch such warnings with clang as well. The warning is off by default in
both gcc and with this patch. This patch enables it either when extensions
are disabled with -pedantic, or with the specific flag -Wformat-pedantic.

The C99 and C11 specs do appear to require arguments corresponding to 'p'
specifiers to be void*: "If any argument is not the correct type for the
corresponding conversion specification, the behavior is undefined."
[7.19.6.1 p9], and of the 'p' format specifier "The argument shall be a
pointer to void." [7.19.6.1 p8]

Both printf and scanf format checking are covered.

llvm-svn: 231211

9 years agoMove emitDIE and emitAbbrevs to AsmPrinter. NFC.
Frederic Riss [Wed, 4 Mar 2015 02:30:17 +0000 (02:30 +0000)]
Move emitDIE and emitAbbrevs to AsmPrinter. NFC.

(They are called emitDwarfDIE and emitDwarfAbbrevs in their new home)

llvm-dsymutil wants to reuse that code, but it doesn't have a DwarfUnit or
a DwarfDebug object to call those. It has access to an AsmPrinter though.

Having emitDIE in the AsmPrinter also removes the DwarfFile dependency
on DwarfDebug, and thus the patch drops that field.

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

llvm-svn: 231210

9 years agoConstify AsmPrinter passed to DIE methods.
Frederic Riss [Wed, 4 Mar 2015 02:30:08 +0000 (02:30 +0000)]
Constify AsmPrinter passed to DIE methods.

llvm-svn: 231209

9 years agoRevert "temporary"
Rui Ueyama [Wed, 4 Mar 2015 02:12:55 +0000 (02:12 +0000)]
Revert "temporary"

This reverts accidental commit r231205.

llvm-svn: 231208

9 years agoFix the test for r231201. We don't crash anymore.
Filipe Cabecinhas [Wed, 4 Mar 2015 02:09:40 +0000 (02:09 +0000)]
Fix the test for r231201. We don't crash anymore.

llvm-svn: 231207

9 years agoSimplify FileArchive. NFC.
Rui Ueyama [Wed, 4 Mar 2015 02:09:22 +0000 (02:09 +0000)]
Simplify FileArchive. NFC.

This patch moves local variable definitions so that their scope get narrower.
Also uses range-based loop. Both are for readability.

llvm-svn: 231206

9 years agotemporary
Rui Ueyama [Wed, 4 Mar 2015 02:09:21 +0000 (02:09 +0000)]
temporary

llvm-svn: 231205

9 years agoWorkaround MSVC not providing implicit move members
David Blaikie [Wed, 4 Mar 2015 02:07:51 +0000 (02:07 +0000)]
Workaround MSVC not providing implicit move members

llvm-svn: 231204

9 years agoObject: Add range iterators to Archive symbols
Rui Ueyama [Wed, 4 Mar 2015 02:05:06 +0000 (02:05 +0000)]
Object: Add range iterators to Archive symbols

Also define operator* for symbol iterator just like Archive children iterator.

llvm-svn: 231203

9 years agoFurther reduce header footprint of Debugger.h.
Zachary Turner [Wed, 4 Mar 2015 01:58:01 +0000 (01:58 +0000)]
Further reduce header footprint of Debugger.h.

llvm-svn: 231202

9 years agoUse report_fatal_error instead of unreachable for -fast-isel-abort
Mehdi Amini [Wed, 4 Mar 2015 01:48:39 +0000 (01:48 +0000)]
Use report_fatal_error instead of unreachable for -fast-isel-abort

Suggestion by Andrea Di Biagio

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 231201

9 years agounique_ptrify ValID::ConstantStructElts
David Blaikie [Wed, 4 Mar 2015 01:41:01 +0000 (01:41 +0000)]
unique_ptrify ValID::ConstantStructElts

llvm-svn: 231200

9 years agoLLParser: Avoid copying ValIDs, the copy ctor is deprecated in C++11 due to the prese...
David Blaikie [Wed, 4 Mar 2015 01:40:07 +0000 (01:40 +0000)]
LLParser: Avoid copying ValIDs, the copy ctor is deprecated in C++11 due to the presence of a user-declared dtor

llvm-svn: 231199

9 years agoUse the vanilla func_end symbol for .size.
Rafael Espindola [Wed, 4 Mar 2015 01:35:23 +0000 (01:35 +0000)]
Use the vanilla func_end symbol for .size.

No need to create yet another temp symbol.

llvm-svn: 231198

9 years agoRestore accidental deletion of header comment character
Ed Maste [Wed, 4 Mar 2015 01:29:18 +0000 (01:29 +0000)]
Restore accidental deletion of header comment character

llvm-svn: 231197

9 years agoMake a private function private.
Rui Ueyama [Wed, 4 Mar 2015 01:26:32 +0000 (01:26 +0000)]
Make a private function private.

llvm-svn: 231196

9 years agoRemove MCStreamer include which isn't used here. NFC
Pete Cooper [Wed, 4 Mar 2015 01:24:26 +0000 (01:24 +0000)]
Remove MCStreamer include which isn't used here.  NFC

llvm-svn: 231195

9 years agoThis file should always have included MCAssembler and not MCStreamer. NFC
Pete Cooper [Wed, 4 Mar 2015 01:24:24 +0000 (01:24 +0000)]
This file should always have included MCAssembler and not MCStreamer.  NFC

llvm-svn: 231194

9 years agoRemove MCStreamer.h include from MCContext.h and explictly include it where necessary...
Pete Cooper [Wed, 4 Mar 2015 01:24:11 +0000 (01:24 +0000)]
Remove MCStreamer.h include from MCContext.h and explictly include it where necessary.  NFC

llvm-svn: 231193

9 years agoRecommit r231168: unique_ptrify LiveRange::segmentSet
David Blaikie [Wed, 4 Mar 2015 01:20:33 +0000 (01:20 +0000)]
Recommit r231168: unique_ptrify LiveRange::segmentSet

GCC 4.7's libstdc++ doesn't have std::map::emplace, but it does have
std::unordered_map::emplace, and the use case here doesn't appear to
need ordering. The container has been changed in a separate/precursor
patch, and now this patch should hopefully build cleanly even with
GCC 4.7.

& then I realized the order of the container did matter, so extra
handling of ordering was added in r231189.

Original commit message:
This makes LiveRange non-copyable, and LiveInterval is already
non-movable (due to the explicit dtor), so now it's non-copyable and
non-movable.

Fix the one case where we were relying on the (deprecated in C++11)
implicit copy ctor of LiveInterval (which happened to work because the
ctor created an object with a null segmentSet, so double-deleting the
null pointer was fine).

llvm-svn: 231192

9 years agoWeaken the check for a specific movl on the twoaddr-coalesce-3
Eric Christopher [Wed, 4 Mar 2015 01:19:17 +0000 (01:19 +0000)]
Weaken the check for a specific movl on the twoaddr-coalesce-3
test - we only care that there are two moves in the loop and not
which part is relative to which register anyhow.

llvm-svn: 231191

9 years agoReverse the order libc++ and libc++abi are added in CMake.
Eric Fiselier [Wed, 4 Mar 2015 01:16:43 +0000 (01:16 +0000)]
Reverse the order libc++ and libc++abi are added in CMake.

llvm-svn: 231190

9 years agoRecommit r231175: Change LiveStackAnalysis::SS2IntervalMap from std::map to std:...
David Blaikie [Wed, 4 Mar 2015 01:15:53 +0000 (01:15 +0000)]
Recommit r231175: Change LiveStackAnalysis::SS2IntervalMap from std::map to std::unordered_map

The order of this container was needed at one point - so, at that point
create a temporary array of pointers, sort those, then iterate them.
This keeps lookup efficient (& the lesser issue, of allowing the use of
emplace... ), object identity preserved, and ordered iteration in the
one place that requires it.

While this has no functional change, I realize it does mean allocating
an extra data structure and performing a sort - so if this looks suspect
to anyone regarding perf characteristics, I'm all ears.

llvm-svn: 231189

9 years agoAnother configure+make fix for r230963
Ed Maste [Wed, 4 Mar 2015 01:05:52 +0000 (01:05 +0000)]
Another configure+make fix for r230963

llvm-svn: 231188

9 years agoFix the x86-upgrade-avx2-vbroadcast.ll test by commenting the CHECK lines
Filipe Cabecinhas [Wed, 4 Mar 2015 00:49:12 +0000 (00:49 +0000)]
Fix the x86-upgrade-avx2-vbroadcast.ll test by commenting the CHECK lines

llvm-svn: 231187

9 years agoRegisterCoalescer: Gracefully continue if subrange merging fails.
Matthias Braun [Wed, 4 Mar 2015 00:43:50 +0000 (00:43 +0000)]
RegisterCoalescer: Gracefully continue if subrange merging fails.

There is a known bug where the register coalescer fails to merge
subranges when multiple ranges end up in the "overflow" bit 32 of the
lanemasks. A proper fix for this is complicated so for now this is a
workaround which lets the register coalescer drop the subregister
liveness information (we just loose some precision by that) and
continue.

llvm-svn: 231186

9 years agoDrop the "eh_" from eh_func_begin and eh_func_end.
Rafael Espindola [Wed, 4 Mar 2015 00:27:43 +0000 (00:27 +0000)]
Drop the "eh_" from eh_func_begin and eh_func_end.

They will be used for more than eh tables.

llvm-svn: 231185

9 years agoRevert "unique_ptrify LiveRange::segmentSet"
David Blaikie [Wed, 4 Mar 2015 00:15:02 +0000 (00:15 +0000)]
Revert "unique_ptrify LiveRange::segmentSet"

Apparently something does care about ordering of LiveIntervals... so
revert all that stuff (r231175, r231176, r231177) & take some time to
re-evaluate.

llvm-svn: 231184

9 years ago[RewriteStatepointsForGC] Fix a relocation bug w.r.t values defined by invoke instruc...
Philip Reames [Wed, 4 Mar 2015 00:13:52 +0000 (00:13 +0000)]
[RewriteStatepointsForGC] Fix a relocation bug w.r.t values defined by invoke instructions

RewriteStatepointsForGC pass emits an alloca for each GC pointer which will be relocated. It then inserts stores after def and all relocations, and inserts loads before each use as well. In the end, mem2reg is used to update IR with relocations in SSA form.

However, there is a problem with inserting stores for values defined by invoke instructions. The code didn't expect a def was a terminator instruction, and inserting instructions after these terminators resulted in malformed IR.

This patch fixes this problem by handling invoke instructions as a special case. If the def is an invoke instruction, the store will be inserted at the beginning of the normal destination block. Since return value from invoke instruction does not dominate the unwind destination block, no action is needed there.

Patch by: Chen Li
Differential Revision: http://reviews.llvm.org/D7923

llvm-svn: 231183

9 years agoRemove 'llvm.x86.avx2.vbroadcasti128' intrinsic.
Juergen Ributzka [Wed, 4 Mar 2015 00:13:25 +0000 (00:13 +0000)]
Remove 'llvm.x86.avx2.vbroadcasti128' intrinsic.

The intrinsic is no longer generated by the front-end. Remove the intrinsic and
auto-upgrade it to a vector shuffle.

Reviewed by Nadav

This is related to rdar://problem/18742778.

llvm-svn: 231182

9 years agoDocument the LLVM "thunk" attribute added back in r226708
Reid Kleckner [Wed, 4 Mar 2015 00:08:56 +0000 (00:08 +0000)]
Document the LLVM "thunk" attribute added back in r226708

llvm-svn: 231181

9 years agoTry fixing configure+make build on FreeBSD after r230963
Ed Maste [Wed, 4 Mar 2015 00:06:26 +0000 (00:06 +0000)]
Try fixing configure+make build on FreeBSD after r230963

llvm-svn: 231180

9 years agoTypePrinter print __restrict if not in C99 mode
Jacques Pienaar [Tue, 3 Mar 2015 23:58:09 +0000 (23:58 +0000)]
TypePrinter print __restrict if not in C99 mode

restrict is a keyword in C99 but not in C++ while clang accepts __restrict for C++ code. Modify the TypePrinter to print __restrict when not processing C99 code.

Printing restrict in C++ was problematic as printing the argument of
  int f(int * __restrict a) { ... }
resulted in
  int *restrict a
which is incorrect.

http://reviews.llvm.org/D8048

llvm-svn: 231179

9 years agoUpdate twoaddr-coalesce-3.ll to run on darwin and linux machines:
Eric Christopher [Tue, 3 Mar 2015 23:56:20 +0000 (23:56 +0000)]
Update twoaddr-coalesce-3.ll to run on darwin and linux machines:

a) Default relocation model differences,
b) Different numbers of # in comments

llvm-svn: 231178

9 years agoAdd missing header include
David Blaikie [Tue, 3 Mar 2015 23:54:35 +0000 (23:54 +0000)]
Add missing header include

llvm-svn: 231177

9 years agoRecommit r231168: unique_ptrify LiveRange::segmentSet
David Blaikie [Tue, 3 Mar 2015 23:53:03 +0000 (23:53 +0000)]
Recommit r231168: unique_ptrify LiveRange::segmentSet

GCC 4.7's libstdc++ doesn't have std::map::emplace, but it does have
std::unordered_map::emplace, and the use case here doesn't appear to
need ordering. The container has been changed in a separate/precursor
patch, and now this patch should hopefully build cleanly even with
GCC 4.7.

Original commit message:
This makes LiveRange non-copyable, and LiveInterval is already
non-movable (due to the explicit dtor), so now it's non-copyable and
non-movable.

Fix the one case where we were relying on the (deprecated in C++11)
implicit copy ctor of LiveInterval (which happened to work because the
ctor created an object with a null segmentSet, so double-deleting the
null pointer was fine).

llvm-svn: 231176

9 years agoChange LiveStackAnalysis::SS2IntervalMap from std::map to std::unordered_map
David Blaikie [Tue, 3 Mar 2015 23:53:00 +0000 (23:53 +0000)]
Change LiveStackAnalysis::SS2IntervalMap from std::map to std::unordered_map

This use case doesn't appear to benefit from ordering, and
std::unordered_map has the advantage that it supports emplace (the
LiveInterval values really shouldn't be copyable or movable & they won't
be in a near-future patch).

llvm-svn: 231175

9 years ago[asan] more fixes for x32, patches by H.J. Lu
Kostya Serebryany [Tue, 3 Mar 2015 23:46:40 +0000 (23:46 +0000)]
[asan] more fixes for x32, patches by H.J. Lu

llvm-svn: 231174

9 years agoRevert "unique_ptrify LiveRange::segmentSet"
David Blaikie [Tue, 3 Mar 2015 23:44:07 +0000 (23:44 +0000)]
Revert "unique_ptrify LiveRange::segmentSet"

GCC 4.7 *shakes fist* (doesn't have std::map::emplace... )

This reverts commit r231168.

llvm-svn: 231173

9 years agoMove TargetLibraryInfo data from two files into one common .def file.
Jan Wen Voung [Tue, 3 Mar 2015 23:41:58 +0000 (23:41 +0000)]
Move TargetLibraryInfo data from two files into one common .def file.

Summary:
This makes it more obvious that the enum definition and the
"StandardName" array is in sync. Mechanically refactored w/ a
python script.

Test Plan: still compiles

Subscribers: llvm-commits

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

llvm-svn: 231172

9 years ago[asan] attempting to fix the windows build
Kostya Serebryany [Tue, 3 Mar 2015 23:38:24 +0000 (23:38 +0000)]
[asan] attempting to fix the windows build

llvm-svn: 231171

9 years agoTry to unbreak the Windows buildbots.
Filipe Cabecinhas [Tue, 3 Mar 2015 23:36:57 +0000 (23:36 +0000)]
Try to unbreak the Windows buildbots.

llvm-svn: 231170

9 years agoFix errors building on linux.
Zachary Turner [Tue, 3 Mar 2015 23:36:51 +0000 (23:36 +0000)]
Fix errors building on linux.

llvm-svn: 231169

9 years agounique_ptrify LiveRange::segmentSet
David Blaikie [Tue, 3 Mar 2015 23:30:40 +0000 (23:30 +0000)]
unique_ptrify LiveRange::segmentSet

This makes LiveRange non-copyable, and LiveInterval is already
non-movable (due to the explicit dtor), so now it's non-copyable and
non-movable.

Fix the one case where we were relying on the (deprecated in C++11)
implicit copy ctor of LiveInterval (which happened to work because the
ctor created an object with a null segmentSet, so double-deleting the
null pointer was fine).

llvm-svn: 231168

9 years ago[sanitizer/coverage] Add AFL-style coverage counters (search heuristic for fuzzing).
Kostya Serebryany [Tue, 3 Mar 2015 23:27:02 +0000 (23:27 +0000)]
[sanitizer/coverage] Add AFL-style coverage counters (search heuristic for fuzzing).

Introduce -mllvm -sanitizer-coverage-8bit-counters=1
which adds imprecise thread-unfriendly 8-bit coverage counters.

The run-time library maps these 8-bit counters to 8-bit bitsets in the same way
AFL (http://lcamtuf.coredump.cx/afl/technical_details.txt) does:
counter values are divided into 8 ranges and based on the counter
value one of the bits in the bitset is set.
The AFL ranges are used here: 1, 2, 3, 4-7, 8-15, 16-31, 32-127, 128+.

These counters provide a search heuristic for single-threaded
coverage-guided fuzzers, we do not expect them to be useful for other purposes.

Depending on the value of -fsanitize-coverage=[123] flag,
these counters will be added to the function entry blocks (=1),
every basic block (=2), or every edge (=3).

Use these counters as an optional search heuristic in the Fuzzer library.
Add a test where this heuristic is critical.

llvm-svn: 231166

9 years agoRemove subtarget dependence in pass pipeline setup for AArch64.
Eric Christopher [Tue, 3 Mar 2015 23:22:40 +0000 (23:22 +0000)]
Remove subtarget dependence in pass pipeline setup for AArch64.

llvm-svn: 231165

9 years agoWinEH: Remove vestigial EH object
Reid Kleckner [Tue, 3 Mar 2015 23:20:30 +0000 (23:20 +0000)]
WinEH: Remove vestigial EH object

Ultimately, we'll need to leave something behind to indicate which
alloca will hold the exception, but we can figure that out when it comes
time to emit the __CxxFrameHandler3 catch handler table.

llvm-svn: 231164

9 years agoAccidental semicolon in python.
Chaoren Lin [Tue, 3 Mar 2015 23:14:27 +0000 (23:14 +0000)]
Accidental semicolon in python.

llvm-svn: 231163

9 years agoSymbolizer refactoring: Unify access to symbolizer tools from POSIXSymbolizer
Kuba Brecka [Tue, 3 Mar 2015 23:13:02 +0000 (23:13 +0000)]
Symbolizer refactoring: Unify access to symbolizer tools from POSIXSymbolizer

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

llvm-svn: 231162

9 years agoDon't #include FormatManager.h from Debugger.h
Zachary Turner [Tue, 3 Mar 2015 23:11:11 +0000 (23:11 +0000)]
Don't #include FormatManager.h from Debugger.h

Debugger.h is a huge file that gets included everywhere, and
FormatManager.h brings in a ton of unnecessary stuff and doesn't
even use anything from it in the header.

llvm-svn: 231161

9 years ago[analyzer] unix.Malloc: preserve AllocaRegion bound to __builtin_alloca().
Anton Yartsev [Tue, 3 Mar 2015 22:58:46 +0000 (22:58 +0000)]
[analyzer] unix.Malloc: preserve AllocaRegion bound to __builtin_alloca().

Binding __builtin_alloca() return value to the symbolic value kills previous binding to a AllocaRegion established by the core.BuiltinFunctions checker. Other checkers may rely upon this information. Rollback handling of __builtin_alloca() to the way prior to r229850.

llvm-svn: 231160

9 years agoRemove unnecessary platform specific code from TestGlobalVariables.
Chaoren Lin [Tue, 3 Mar 2015 22:46:20 +0000 (22:46 +0000)]
Remove unnecessary platform specific code from TestGlobalVariables.

llvm-svn: 231159

9 years agoLangRef: Clarify select's semantics with vector arguments
David Majnemer [Tue, 3 Mar 2015 22:45:47 +0000 (22:45 +0000)]
LangRef: Clarify select's semantics with vector arguments

llvm-svn: 231158

9 years agoFix FreeBSD build after r231145
Ed Maste [Tue, 3 Mar 2015 22:44:18 +0000 (22:44 +0000)]
Fix FreeBSD build after r231145

llvm-svn: 231157

9 years agoInstCombine: Ensure select condition types are identical before merging
David Majnemer [Tue, 3 Mar 2015 22:40:36 +0000 (22:40 +0000)]
InstCombine: Ensure select condition types are identical before merging

Selection conditions may be vectors or scalars.  Make sure InstCombine
doesn't indiscriminately assume that a select which is value dependent
on another select have identical select condition types.

This fixes PR22773.

llvm-svn: 231156

9 years agoMoving WinEH outlining tests to an architecture neutral location
Andrew Kaylor [Tue, 3 Mar 2015 22:33:39 +0000 (22:33 +0000)]
Moving WinEH outlining tests to an architecture neutral location

llvm-svn: 231155

9 years agoAvoid copying LiveInterval, this could lead to a double-delete
David Blaikie [Tue, 3 Mar 2015 22:25:48 +0000 (22:25 +0000)]
Avoid copying LiveInterval, this could lead to a double-delete

llvm-svn: 231154

9 years agoImplement our own future and use that for FileArchive::preload().
Rui Ueyama [Tue, 3 Mar 2015 22:19:46 +0000 (22:19 +0000)]
Implement our own future and use that for FileArchive::preload().

std::promise and std::future in old version of libstdc++ are buggy.
I think that's the reason why LLD tests were flaky on Ubuntu 13
buildbots until we disabled file preloading.

In this patch, I implemented very simple future and used that in
FileArchive. Compared to std::promise and std::future, it lacks
many features, but should serve our purpose.

http://reviews.llvm.org/D8025

llvm-svn: 231153

9 years agoDebugInfo: Remove useless test
Duncan P. N. Exon Smith [Tue, 3 Mar 2015 22:18:24 +0000 (22:18 +0000)]
DebugInfo: Remove useless test

This test doesn't provide any value (it just checks that the frontend
produces exactly one compile unit), and it certainly isn't doing what
the comment says.  Noticed via IRC review of my update to it in r231083.

llvm-svn: 231152