OSDN Git Service

android-x86/external-llvm.git
8 years agoReapply "[Coverage] Prevent detection of false instantiations in case of macro expans...
Igor Kudrin [Mon, 18 Apr 2016 15:36:30 +0000 (15:36 +0000)]
Reapply "[Coverage] Prevent detection of false instantiations in case of macro expansion."

The root of the problem was that findMainViewFileID(File, Function)
could return some ID for any given file, even though that file
was not the main file for that function.

This patch ensures that the result of this function is conformed
with the result of findMainViewFileID(Function).

This commit reapplies r266436, which was reverted by r266458,
with the .covmapping file serialized in v1 format.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266620 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert "Replace the use of MaxFunctionCount module flag"
Eric Liu [Mon, 18 Apr 2016 15:31:11 +0000 (15:31 +0000)]
Revert "Replace the use of MaxFunctionCount module flag"

This reverts commit r266477.

This commit introduces cyclic dependency. This commit has "Analysis" depend on "ProfileData",
while "ProfileData" depends on "Object", which depends on "BitCode", which
depends on "Analysis".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266619 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AMDGPU][llvm-mc] s_setreg* - Fix order of operands
Artem Tamazov [Mon, 18 Apr 2016 14:54:26 +0000 (14:54 +0000)]
[AMDGPU][llvm-mc] s_setreg* - Fix order of operands

Order should match the sp3 syntax, where destination (simm16 denoting the hwreg) is coming first.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266617 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSilence some "initialized but unused" warnings from MSVC -- the function being called...
Aaron Ballman [Mon, 18 Apr 2016 14:47:19 +0000 (14:47 +0000)]
Silence some "initialized but unused" warnings from MSVC -- the function being called is a static function, so there's no need for an instance variable. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266616 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert 266581 (and follow-up 266588), it doesn't build on Windows.
Nico Weber [Mon, 18 Apr 2016 13:57:08 +0000 (13:57 +0000)]
Revert 266581 (and follow-up 266588), it doesn't build on Windows.

Three problems:
1. <future> can't be easily used.  If you must use it, see
   include/Support/ThreadPool.h for how.
2. constexpr problems, even after 266588.
3. Move assignment operators can't be defaulted in MSVC2013.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266615 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUnbreak building unit tests on Windows after r266595.
Nico Weber [Mon, 18 Apr 2016 13:54:50 +0000 (13:54 +0000)]
Unbreak building unit tests on Windows after r266595.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266614 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUnbreak building LLVMTarget on Windows after r266595.
Nico Weber [Mon, 18 Apr 2016 13:38:58 +0000 (13:38 +0000)]
Unbreak building LLVMTarget on Windows after r266595.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266613 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUnbreak building llvm-pdbdump on Windows after r266595.
Nico Weber [Mon, 18 Apr 2016 13:31:31 +0000 (13:31 +0000)]
Unbreak building llvm-pdbdump on Windows after r266595.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266612 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[mips][ias] Prevent double-filling of delay slots by generating '.set noreorder'...
Daniel Sanders [Mon, 18 Apr 2016 12:35:36 +0000 (12:35 +0000)]
[mips][ias] Prevent double-filling of delay slots by generating '.set noreorder' regions.

Summary:
When clang is given -save-temps or -via-file-asm, any inline assembly in
the source is parsed twice. Once by the compiler, and again by the
assembler. We must take care to ensure that this doesn't lead to
double-filling delay slots.

Reviewers: sdardis, vkalintiris

Subscribers: dsanders, sdardis, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266608 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoInclude SmallVector.h header in lib/Target/WebAssembly/InstPrinter/WebAssemblyInstPri...
Eric Liu [Mon, 18 Apr 2016 12:21:59 +0000 (12:21 +0000)]
Include SmallVector.h header in lib/Target/WebAssembly/InstPrinter/WebAssemblyInstPrinter.h

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266606 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ARM] AArch32 v8 NEON is still not IEEE-754 compliant
Renato Golin [Mon, 18 Apr 2016 12:06:47 +0000 (12:06 +0000)]
[ARM] AArch32 v8 NEON is still not IEEE-754 compliant

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266603 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[mips][ias] Stream macro expansions to output instead of buffering them. NFC.
Daniel Sanders [Mon, 18 Apr 2016 12:06:15 +0000 (12:06 +0000)]
[mips][ias] Stream macro expansions to output instead of buffering them. NFC.

Summary:
This will allows us to eliminate some magic numbers from the offset operand of
branch instructions in favour of symbols and makes it possible to avoid
double-filling delay slots when clang is given -save-temps.

parseDirectiveCpRestore() is calling isIntegratedAssemblerRequired() for the
moment since correctly pushing the generation of these instructions into the
ELF target streamer is tricky enough to warrant a separate patch.

Reviewers: sdardis, vkalintiris

Subscribers: dsanders, llvm-commits, sdardis

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266602 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[PowerPC] add comment to test
Strahinja Petrovic [Mon, 18 Apr 2016 11:52:14 +0000 (11:52 +0000)]
[PowerPC] add comment to test

Added comment in test for soft-float operations on ppc architecture.
Test commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266600 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[NFC] Header cleanup
Mehdi Amini [Mon, 18 Apr 2016 09:17:29 +0000 (09:17 +0000)]
[NFC] Header cleanup

Removed some unused headers, replaced some headers with forward class declarations.

Found using simple scripts like this one:
clear && ack --cpp -l '#include "llvm/ADT/IndexedMap.h"' | xargs grep -L 'IndexedMap[<]' | xargs grep -n --color=auto 'IndexedMap'

Patch by Eugene Kosov <claprix@yandex.ru>

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

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266595 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Orc] Tweak some of the new RPC code to silence a warning (extraneous ';') and
Lang Hames [Mon, 18 Apr 2016 05:22:32 +0000 (05:22 +0000)]
[Orc] Tweak some of the new RPC code to silence a warning (extraneous ';') and
MSVC errors related to constexpr.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266588 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoBitcodeWriter: WorkList => Worklist, NFC
Duncan P. N. Exon Smith [Mon, 18 Apr 2016 01:24:58 +0000 (01:24 +0000)]
BitcodeWriter: WorkList => Worklist, NFC

I have no idea how I chose two different spellings in the space of a
couple of weeks, but now I can't remember what to use where.  Choose
"Worklist".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266582 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ORC] Generalize the ORC RPC utils to support RPC function return values and
Lang Hames [Mon, 18 Apr 2016 01:06:49 +0000 (01:06 +0000)]
[ORC] Generalize the ORC RPC utils to support RPC function return values and
asynchronous call/handle. Also updates the ORC remote JIT API to use the new
scheme.

The previous version of the RPC tools only supported void functions, and
required the user to manually call a paired function to return results. This
patch replaces the Procedure typedef (which only supported void functions) with
the Function typedef which supports return values, e.g.:

  Function<FooId, int32_t(std::string)> Foo;

The RPC primitives and channel operations are also expanded. RPC channels must
support four new operations: startSendMessage, endSendMessage,
startRecieveMessage and endRecieveMessage, to handle channel locking. In
addition, serialization support for tuples to RPCChannels is added to enable
multiple return values.

The RPC primitives are expanded from callAppend, call, expect and handle, to:

appendCallAsync - Make an asynchronous call to the given function.

callAsync - The same as appendCallAsync, but calls send on the channel when
            done.

callSTHandling - Blocking call for single-threaded code. Wraps a call to
                 callAsync then waits on the result, using a user-supplied
                 handler to handle any callbacks from the remote.

callST - The same as callSTHandling, except that it doesn't handle
         callbacks - it expects the result to be the first return.

expect and handle - as before.

handleResponse - Handle a response from the remote.

waitForResult - Wait for the response with the given sequence number to arrive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266581 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLinker: Share a single Metadata map for the lifetime of IRMover
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 23:30:31 +0000 (23:30 +0000)]
Linker: Share a single Metadata map for the lifetime of IRMover

Cache the result of mapping metadata nodes between instances of IRLinker
(i.e., for the lifetime of IRMover).  There shouldn't be any real
functional change here, but this should give a major speedup.  I had
loaned this to Mehdi when he tested performance of r266446, and the two
patches together gave a 10x speedup in metadata mapping.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266579 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86] Be explicit about calls to setOperationAction for AVX2 and AVX512 rather than...
Craig Topper [Sun, 17 Apr 2016 22:49:46 +0000 (22:49 +0000)]
[X86] Be explicit about calls to setOperationAction for AVX2 and AVX512 rather than just looping over all vector types and conditinally matching them. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266577 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert "NFC: unify clang / LLVM atomic ordering"
JF Bastien [Sun, 17 Apr 2016 21:29:01 +0000 (21:29 +0000)]
Revert "NFC: unify clang / LLVM atomic ordering"

This reverts commit 537951f2f16d6a8542571c7722fcbae07d4e62c2.

Causes an assert in:
  test/Transforms/AtomicExpand/SPARC/libcalls.ll
  (Ordering2 != AtomicOrdering::NotAtomic && "expect atomic MO")

Bot:
  http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_check/21724/testReport/junit/LLVM/Transforms_AtomicExpand_SPARC/libcalls_ll/

I'm not getting this assert on my local debug build, but I'll revert
just to be sure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266576 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoNFC: unify clang / LLVM atomic ordering
JF Bastien [Sun, 17 Apr 2016 21:00:57 +0000 (21:00 +0000)]
NFC: unify clang / LLVM atomic ordering

Summary: This makes the C11 / C++11 *ABI* atomic ordering accessible from LLVM, as discussed in http://reviews.llvm.org/D18200#inline-151433

Reviewers: jyknight, reames

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266573 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoWhen building with LLVM_ENABLE_MODULES, put the module cache into the build
Richard Smith [Sun, 17 Apr 2016 20:58:01 +0000 (20:58 +0000)]
When building with LLVM_ENABLE_MODULES, put the module cache into the build
directory. This is important for build bots to avoid filling up /tmp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266571 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoTransforms: Try harder to fix bootstrap after r266565
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 20:11:09 +0000 (20:11 +0000)]
Transforms: Try harder to fix bootstrap after r266565

This catches two nullptr insertions into the ValueMap I missed in
r266567.  I missed CloneFunction becuase it never calls RemapInstruction
directly.  Here's one of the still-failing bots:
  http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/11496

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266570 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLinker: Don't double-schedule appending variables
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 19:40:20 +0000 (19:40 +0000)]
Linker: Don't double-schedule appending variables

Add an assertion to ValueMapper that prevents double-scheduling of
GlobalValues to remap, and fix the one place it happened.  There are
tons of tests that fail with this assertion in place and without the
code change, so I'm not adding another.

Although it looks related, r266563 was, indeed, removing dead code.
AFAICT, this cross-file double-scheduling started in r266510 when the
cross-file recursion was removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266569 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ParallelCG] SmallVector<char> -> SmallString.
Davide Italiano [Sun, 17 Apr 2016 19:38:57 +0000 (19:38 +0000)]
[ParallelCG] SmallVector<char> -> SmallString.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266568 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoTransforms: Fix bootstrap after r266565
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 19:26:49 +0000 (19:26 +0000)]
Transforms: Fix bootstrap after r266565

Apparently there isn't test coverage for all of these.  I'd appreciate
if someone with could reproduce and send me something to reduce, but for
now I've just looked for users of RemapInstruction and MapValue and
ensured they don't accidentally insert nullptr.  Here is one of the
bootstraps that caught:

  http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/11494

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266567 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix a use after move.
Rafael Espindola [Sun, 17 Apr 2016 18:56:49 +0000 (18:56 +0000)]
Fix a use after move.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266566 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoValueMapper: Don't allow explicit null mappings of Values, NFC
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 18:53:24 +0000 (18:53 +0000)]
ValueMapper: Don't allow explicit null mappings of Values, NFC

As a follow-up to r123058, assert that there are no null mappings in the
ValueMap instead of just ignoring them when they are there.  There were
a couple of accidental insertions in CloneFunction so I cleaned those up
(caught by testcases).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266565 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoKeep only the splitCodegen version that takes a factory.
Rafael Espindola [Sun, 17 Apr 2016 18:42:27 +0000 (18:42 +0000)]
Keep only the splitCodegen version that takes a factory.

This makes it much easier to see that all created TargetMachines are
equivalent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266564 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoIRMover: Remove dead code, NFC
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 18:21:47 +0000 (18:21 +0000)]
IRMover: Remove dead code, NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266563 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDeclare MVT::SimpleValueType as an int8_t sized enum. This removes 400 bytes from...
Craig Topper [Sun, 17 Apr 2016 17:37:33 +0000 (17:37 +0000)]
Declare MVT::SimpleValueType as an int8_t sized enum. This removes 400 bytes from TargetLoweringBase and probably other places.

This required changing several places to print VT enums as strings instead of raw ints since the proper method to use to print became ambiguous. This is probably an improvement anyway.

This also appears to save ~8K from an x86 self host build of llc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266562 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86][SSE] Added 16i8 -> 8i64 sext test
Simon Pilgrim [Sun, 17 Apr 2016 15:10:42 +0000 (15:10 +0000)]
[X86][SSE] Added 16i8 -> 8i64 sext test

Shows poor codegen for AVX2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266560 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86] Added TODO comment for target shuffle mask decoding of bitcasted masks
Simon Pilgrim [Sun, 17 Apr 2016 11:34:18 +0000 (11:34 +0000)]
[X86] Added TODO comment for target shuffle mask decoding of bitcasted masks

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266559 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86] Remove unneeded variables
Asaf Badouh [Sun, 17 Apr 2016 08:28:40 +0000 (08:28 +0000)]
[X86] Remove unneeded variables

no functional change.
ExtraLoad and WrapperKind are been used only if (OpFlags == X86II::MO_GOTPCREL).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266557 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AVX512] ISD::MUL v2i64/v4i64 should only be legal if DQI and VLX features are enabled.
Craig Topper [Sun, 17 Apr 2016 07:25:39 +0000 (07:25 +0000)]
[AVX512] ISD::MUL v2i64/v4i64 should only be legal if DQI and VLX features are enabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266554 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoIR: Fix type-refs in testcase from r266548
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 06:42:30 +0000 (06:42 +0000)]
IR: Fix type-refs in testcase from r266548

There's a hole in the verifier right now: if a module has no compile
units, it never checks that all the string-based DITypeRefs get
resolved.  As a result, this testcase didn't fail the verifier, even
there were references to `!"has-uuid"` instead of `!"uuid"` (the former
was a composite type's 'name:' field, the latter its 'identifier:'
field).

I'm currently working on removing string-based type refs entirely, and
this testcase started failing (because the upgrade script can't resolve
the type refs).  Rather than fixing the (about-to-be-removed) hole in
the verifier, I'm just going to fix the test so that my upgrade script
handles it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266553 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoIR: Use getRawScope() when verifying
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 05:41:09 +0000 (05:41 +0000)]
IR: Use getRawScope() when verifying

Fix a couple of places in the Verifier that call `getScope()` instead of
`getRawScope()`.  Both DIDerivedType::getScope and
DICompositeType::getScope return a DITypeRef right now (which wraps a
Metadata*) so I don't think there's currently an observable bug.  I
found this because a future commit that will change them to cast to
DIScope*.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266552 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoFix a typo in rL265762
Sanjoy Das [Sun, 17 Apr 2016 04:30:43 +0000 (04:30 +0000)]
Fix a typo in rL265762

I accidentally replaced `mayBeOverridden` with `!isInterposable`.
Remove the negation and add a test case that would've caught this.

Many thanks to HÃ¥kan Hjort for spotting this!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266551 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert "use range loop, try to make comments more meaningful; NFCI"
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 03:59:37 +0000 (03:59 +0000)]
Revert "use range loop, try to make comments more meaningful; NFCI"

This reverts commit r266541 since it introduces a use-after-free:
  http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/11471

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266550 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoIR: Use an explicit map for debug info type uniquing
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 03:58:21 +0000 (03:58 +0000)]
IR: Use an explicit map for debug info type uniquing

Rather than relying on the structural equivalence of DICompositeType to
merge type definitions, use an explicit map on the LLVMContext that
LLParser and BitcodeReader consult when constructing new nodes.
Each non-forward-declaration DICompositeType with a non-empty
'identifier:' field is stored/loaded from the type map, and the first
definiton will "win".

This map is opt-in: clients that expect ODR types from different modules
to be merged must call LLVMContext::ensureDITypeMap.

  - Clients that just happen to load more than one Module in the same
    LLVMContext won't magically merge types.

  - Clients (like LTO) that want to continue to merge types based on ODR
    identifiers should opt-in immediately.

I have updated LTOCodeGenerator.cpp, the two "linking" spots in
gold-plugin.cpp, and llvm-link (unless -disable-debug-info-type-map) to
set this.

With this in place, it will be straightforward to remove the DITypeRef
concept (i.e., referencing types by their 'identifier:' string rather
than pointing at them directly).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266549 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoIR: Use ODR to unique DICompositeType members
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 02:30:20 +0000 (02:30 +0000)]
IR: Use ODR to unique DICompositeType members

Merge members that are describing the same member of the same ODR type,
even if other bits differ.  If the file or line differ, we don't care;
if anything else differs, it's an ODR violation (and we still don't
really care).

For DISubprogram declarations, this looks at the LinkageName and Scope.
For DW_TAG_member instances of DIDerivedType, this looks at the Name and
Scope.  In both cases, we know that the Scope follows ODR rules if it
has a non-empty identifier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266548 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Target] Reduce size of the LoadExtActions array in TargetLoweringBase by half. Savin...
Craig Topper [Sun, 17 Apr 2016 01:34:37 +0000 (01:34 +0000)]
[Target] Reduce size of the LoadExtActions array in TargetLoweringBase by half. Saving ~18K bytes from the array.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266547 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Target] Remove checks for Simple VTs before calling routines that can handle Extende...
Craig Topper [Sun, 17 Apr 2016 01:34:35 +0000 (01:34 +0000)]
[Target] Remove checks for Simple VTs before calling routines that can handle Extended VTs too. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266546 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[Target] Fix an assertion that should have been updated when the code below it was...
Craig Topper [Sun, 17 Apr 2016 01:34:32 +0000 (01:34 +0000)]
[Target] Fix an assertion that should have been updated when the code below it was changed in r251033.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266545 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLangRef: Removed some outdated text about DIDerivedType
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 00:45:00 +0000 (00:45 +0000)]
LangRef: Removed some outdated text about DIDerivedType

This text is also incorrect (much like r266540).  It looks like I missed
updating some of what I moved from SourceLevelDebugging.rst in r232566.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266544 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLinker: Clarify test/Linker/type-unique-odr-a.ll, NFC
Duncan P. N. Exon Smith [Sun, 17 Apr 2016 00:26:17 +0000 (00:26 +0000)]
Linker: Clarify test/Linker/type-unique-odr-a.ll, NFC

Split up the long RUN and clarify the CHECK lines:

  - Explicitly confirm there are no other subprograms inside of "A".

  - Remove checks for "bar" and "baz", which were just implicitly
    checking that there were no other subprograms inside of "A".

This prepares for adding a RUN line which links the two files in the
opposite direction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266543 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoIR: Add a configuration point for MDNodeInfo::isEqual, NFC
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 23:42:04 +0000 (23:42 +0000)]
IR: Add a configuration point for MDNodeInfo::isEqual, NFC

This commit has no functionality change, but it adds a configuration
point for MDNodeInfo::isEqual to allow custom uniquing of subclasses of
MDNode, minimizing the diff of a follow-up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266542 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agouse range loop, try to make comments more meaningful; NFCI
Sanjay Patel [Sat, 16 Apr 2016 23:26:16 +0000 (23:26 +0000)]
use range loop, try to make comments more meaningful; NFCI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266541 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLangRef: Fix some bugs in debug info descriptions
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 22:46:47 +0000 (22:46 +0000)]
LangRef: Fix some bugs in debug info descriptions

Fix descriptions of DICompositeType and DIDerivedType.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266540 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoIR: Remove extra blank line, NFC
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 22:26:04 +0000 (22:26 +0000)]
IR: Remove extra blank line, NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266539 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLTO: Use a common LibLTOCodeGenerator::init, NFC
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 22:25:36 +0000 (22:25 +0000)]
LTO: Use a common LibLTOCodeGenerator::init, NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266538 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoValueMapper: Separate mapping of distinct and uniqued nodes (again)
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 21:44:08 +0000 (21:44 +0000)]
ValueMapper: Separate mapping of distinct and uniqued nodes (again)

Since the result of a mapped distinct node is known up front, it's more
efficient to map them separately from uniqued nodes.  This commit pulls
them out of the post-order traversal and stores them in a worklist to be
remapped at the top-level.

This is essentially reapplying r244181 ("ValueMapper: Rotate distinct
node remapping algorithm") to the new iterative algorithm from r265456
("ValueMapper: Rewrite Mapper::mapMetadata without recursion").

Now that the traversal logic only handles uniqued MDNodes, it's much
simpler to inline it all into MDNodeMapper::createPOT (I've killed the
MDNodeMapper::push and MDNodeMapper::tryToPop helpers and localized the
traversal worklist).

The resulting high-level algorithm for MDNodeMapper::map now looks like
this:

  - Distinct nodes are immediately mapped and added to
    MDNodeMapper::DistinctWorklist using MDNodeMapper::mapDistinctNode.

  - Uniqued nodes are mapped via MDNodeMapper::mapTopLevelUniquedNode,
    which traverses the transitive uniqued subgraph of a node to
    calculate uniqued node mappings in bulk.

      - This is a simplified version of MDNodeMapper::map from before
        this commit (originally r265456) that doesn't traverse through
        any distinct nodes.

      - Distinct nodes are added to MDNodeMapper::DistinctWorklist via
        MDNodeMapper::mapDistinctNode.

      - This uses MDNodeMapper::createPOT to fill a
        MDNodeMapper::UniquedGraph (a post-order traversal and side
        table), UniquedGraph::propagateChanges to track which uniqued
        nodes need to change, and MDNodeMapper::mapNodesInPOT to create
        the uniqued nodes.

      - Placeholders for forward references are now only needed when
        there's a uniquing cycle (a cycle of uniqued nodes unbroken by
        distinct nodes).  This is the key functionality change that
        we're reintroducing (from r244181).  As of r265456, a temporary
        forward reference might be needed for any cycle that involved
        uniqued nodes.

  - After mapping the first node appropriately, MDNodeMapper::map works
    through MDNodeMapper::DistinctWorklist.  For each distinct node, its
    operands are remapped with MDNodeMapper::mapDistinctNode and
    MDNodeMapper::mapTopLevelUniquedNode until all nodes have been
    mapped.

Sadly there's nothing observable I can test here; no real functionality
change, just a compile-time speedup from reduced malloc traffic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266537 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoValueMapper: Only put cyclic nodes into CyclicNodes, NFCI
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 21:09:53 +0000 (21:09 +0000)]
ValueMapper: Only put cyclic nodes into CyclicNodes, NFCI

As a minor fixup to r266258, only track nodes that needed a placeholder
in CyclicNodes in MDNodeMapper::mapUniquedNodes.  There should be no
observable functionality change, just some local memory savings because
CyclicNodes only needs to grow to accommodate nodes that are actually
involved in cycles.  (This was the original intent of r266258, or else
the vector would have been called "ChangedNodes".)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266536 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86][AVX] Add shuffle combine tests for MOVDDUP/MOVSHDUP/MOVSLDUP
Simon Pilgrim [Sat, 16 Apr 2016 20:30:59 +0000 (20:30 +0000)]
[X86][AVX] Add shuffle combine tests for MOVDDUP/MOVSHDUP/MOVSLDUP

128, 256 and 512 bit implementations (some not yet supported by combineX86ShuffleChain)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266535 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86] Use ternary operator to reduce code slightly. NFC
Craig Topper [Sat, 16 Apr 2016 19:09:32 +0000 (19:09 +0000)]
[X86] Use ternary operator to reduce code slightly. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266534 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86][XOP] Added VPPERM constant mask decoding and target shuffle combining support
Simon Pilgrim [Sat, 16 Apr 2016 17:52:07 +0000 (17:52 +0000)]
[X86][XOP] Added VPPERM constant mask decoding and target shuffle combining support

Added additional test that peeks through bitcast to v16i8 mask

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266533 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd missing #include to fix build
Vedant Kumar [Sat, 16 Apr 2016 17:39:40 +0000 (17:39 +0000)]
Add missing #include to fix build

Failing bot:
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental/23112/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266532 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[X86][XOP] More VPPERM shuffle mask decode tests
Simon Pilgrim [Sat, 16 Apr 2016 16:37:21 +0000 (16:37 +0000)]
[X86][XOP] More VPPERM shuffle mask decode tests

As requested by D18441

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266531 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoValueMapper: Fix unused var warning. NFC
Simon Atanasyan [Sat, 16 Apr 2016 11:49:40 +0000 (11:49 +0000)]
ValueMapper: Fix unused var warning. NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266529 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRemove some unneeded headers and replace some headers with forward class declarations...
Mehdi Amini [Sat, 16 Apr 2016 07:51:28 +0000 (07:51 +0000)]
Remove some unneeded headers and replace some headers with forward class declarations (NFC)

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

Patch by Eugene Kosov <claprix@yandex.ru>

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266524 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd SVN version to libLLVMLTO
Mehdi Amini [Sat, 16 Apr 2016 07:33:14 +0000 (07:33 +0000)]
Add SVN version to libLLVMLTO

Summary: For Incremental LTO, we need to make sure that an old
cache entry is not used when incrementally re-linking with a new
libLTO.
Adding a global LLVM_REVISION in llvm-config.h would for to
rebuild/relink the world for every "git pull"/"svn update".
So instead only libLTO is made dependent on the VCS and will
be rebuilt (and the dependent binaries relinked, i.e. as of
today: libLTO.dylib and llvm-lto).

Reviewers: beanz

Subscribers: llvm-commits

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

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266523 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoThinLTO: Move the ODR resolution to be based purely on the summary.
Mehdi Amini [Sat, 16 Apr 2016 07:02:16 +0000 (07:02 +0000)]
ThinLTO: Move the ODR resolution to be based purely on the summary.

This is a requirement for the cache handling in D18494

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

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266519 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoThinLTO: Make aliases explicit in the summary
Mehdi Amini [Sat, 16 Apr 2016 06:56:44 +0000 (06:56 +0000)]
ThinLTO: Make aliases explicit in the summary

To be able to work accurately on the reference graph when taking
decision about internalizing, promoting, renaming, etc. We need
to have the alias information explicit.

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

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266517 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReplace hardcoded comment at 'lit.site.cfg.in'
Alex Denisov [Sat, 16 Apr 2016 06:47:41 +0000 (06:47 +0000)]
Replace hardcoded comment at 'lit.site.cfg.in'

At the moment almost every lit.site.cfg.in contains two lines comment:

## Autogenerated by LLVM/Clang configuration.
# Do not edit!

The patch adds variable LIT_SITE_CFG_IN_HEADER, that is replaced from
configure_lit_site_cfg with the note and some useful information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266515 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDo not modify a cl::opt programmatically, global mutable state is evil.
Mehdi Amini [Sat, 16 Apr 2016 04:58:30 +0000 (04:58 +0000)]
Do not modify a cl::opt programmatically, global mutable state is evil.

Found by TSAN on ThinLTO.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266514 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoValueMapper: Stop memoizing ConstantAsMetadata
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 03:39:44 +0000 (03:39 +0000)]
ValueMapper: Stop memoizing ConstantAsMetadata

Stop memoizing ConstantAsMetadata in ValueMapper::mapMetadata.  Now we
have to recompute it, but these metadata aren't particularly common, and
it restricts the lifetime of the Metadata map unnecessarily.

(The motivation is that I have a patch which uses a single Metadata map
for the lifetime of IRMover.  Mehdi profiled r266446 with the patch
applied and we saw a pretty big speedup in lib/Linker.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266513 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[DebugInfo] Correct the assertion introduced in r266509 + update test.
Davide Italiano [Sat, 16 Apr 2016 03:23:48 +0000 (03:23 +0000)]
[DebugInfo] Correct the assertion introduced in r266509 + update test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266512 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReapply "ValueMapper: Eliminate cross-file co-recursion, NFC"
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 02:29:55 +0000 (02:29 +0000)]
Reapply "ValueMapper: Eliminate cross-file co-recursion, NFC"

This reverts commit r266507, reapplying r266503 (and r266505
"ValueMapper: Use API from r266503 in unit tests, NFC") completely
unchanged.

I reverted because of a bot failure here:
  http://lab.llvm.org:8011/builders/lld-x86_64-freebsd/builds/16810/

However, looking more closely, the failure was from a host-compiler
crash (clang 3.7.1) when building:
  lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/DwarfAccelTable.cpp.o

I didn't modify that file, or anything it includes, with that commit.

The next build (which hadn't picked up my revert) got past it:
  http://lab.llvm.org:8011/builders/lld-x86_64-freebsd/builds/16811/

I think this was just unfortunate timing.  I suppose the bot must be
flakey.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266510 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[DebugInfo] Reduce size of DILocalVariable from 40 to 32 bytes.
Davide Italiano [Sat, 16 Apr 2016 02:27:56 +0000 (02:27 +0000)]
[DebugInfo] Reduce size of DILocalVariable from 40 to 32 bytes.

This significantly contributes to peak memory usage during a
LTO Release+DebugInfo build of clang. In my profile the peak usage
is around 164MB before this change and ~130MB after.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266509 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Enable LocalStackSlotAllocation pass
Matt Arsenault [Sat, 16 Apr 2016 02:13:37 +0000 (02:13 +0000)]
AMDGPU: Enable LocalStackSlotAllocation pass

This resolves more frame indexes early and folds
the immediate offsets into the scratch mubuf instructions.

This cleans up a lot of the mess that's currently emitted,
such as emitting add 0s and repeatedly initializing the same
register to 0 when spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266508 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert "ValueMapper: Eliminate cross-file co-recursion, NFC"
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 02:05:33 +0000 (02:05 +0000)]
Revert "ValueMapper: Eliminate cross-file co-recursion, NFC"

This reverts commit r266503, in case it's the root cause of this bot
failure:

  http://lab.llvm.org:8011/builders/lld-x86_64-freebsd/builds/16810

I'm also reverting r266505 -- "ValueMapper: Use API from r266503 in unit
tests, NFC" -- since it's in the way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266507 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAMDGPU: Use s_addk_i32 / s_mulk_i32
Matt Arsenault [Sat, 16 Apr 2016 01:46:49 +0000 (01:46 +0000)]
AMDGPU: Use s_addk_i32 / s_mulk_i32

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266506 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoValueMapper: Use API from r266503 in unit tests, NFC
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 01:40:24 +0000 (01:40 +0000)]
ValueMapper: Use API from r266503 in unit tests, NFC

I'm not in a hurry to migrate all the users, but the unit tests at least
should use the new API.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266505 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoValueMapper: Eliminate cross-file co-recursion, NFC
Duncan P. N. Exon Smith [Sat, 16 Apr 2016 01:29:08 +0000 (01:29 +0000)]
ValueMapper: Eliminate cross-file co-recursion, NFC

Eliminate co-recursion of Mapper::mapValue through
ValueMaterializer::materializeInitFor, through a major redesign of the
ValueMapper.cpp interface.

  - Expose a ValueMapper class that controls the entry points to the
    mapping algorithms.
  - Change IRLinker to use ValueMapper directly, rather than
    llvm::RemapInstruction, llvm::MapValue, etc.
  - Use (e.g.) ValueMapper::scheduleMapGlobalInit to add mapping work to
    a worklist in ValueMapper instead of recursing.

There were two fairly major complications.

Firstly, IRLinker::linkAppendingVarProto incorporates an on-the-fly IR
ugprade that I had to split apart.  Long-term, this upgrade should be
done in the bitcode reader (and we should only accept the "new" form),
but for now I've just made it work and added a FIXME.  The hold-op is
that we need to deprecate C API that relies on this.

Secondly, IRLinker has special logic to correctly implement aliases with
comdats, and uses two ValueToValueMapTy instances and two
ValueMaterializers.  I supported this by allowing clients to register an
alternate mapping context, whose MCID can be passed in when scheduling
new work.

While out of scope for this commit, it should now be straightforward to
remove recursion from Mapper::mapValue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266503 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUpdate and fix LLVM_ENABLE_MODULES:
Richard Smith [Sat, 16 Apr 2016 00:48:58 +0000 (00:48 +0000)]
Update and fix LLVM_ENABLE_MODULES:

1) We need to add this flag prior to adding any other, in case the user has
specified a -fmodule-cache-path= flag in their custom CXXFLAGS. Such a flag
causes -Werror builds to fail, and thus all config checks fail, until we add
the corresponding -fmodules flag. The modules selfhost bot does this, for
instance.

2) Delete module maps that were putting .cpp files into modules.

3) Enable -fmodules-local-submodule-visibility, to get proper module
visibility rules applied across submodules of the same module. Disable
-fmodules for C builds, since that flag is not available there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266502 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd some missing #includes, found by C++ modules selfhost.
Richard Smith [Sat, 16 Apr 2016 00:42:37 +0000 (00:42 +0000)]
Add some missing #includes, found by C++ modules selfhost.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266500 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLinker: Remove an unnecessary local variable in for loop, NFC
Duncan P. N. Exon Smith [Fri, 15 Apr 2016 23:32:44 +0000 (23:32 +0000)]
Linker: Remove an unnecessary local variable in for loop, NFC

Reduces changes in a follow-up commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266493 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoMake this header include the header it depends on, rather than trying to include...
Richard Smith [Fri, 15 Apr 2016 23:30:57 +0000 (23:30 +0000)]
Make this header include the header it depends on, rather than trying to include itself. Found by C++ modules build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266492 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoValueMapper: Hide Mapper::VM behind an accessor, NFC
Duncan P. N. Exon Smith [Fri, 15 Apr 2016 23:18:43 +0000 (23:18 +0000)]
ValueMapper: Hide Mapper::VM behind an accessor, NFC

Change Mapper::VM to a pointer and add a `getVM()` accessor for it.
While this has no functionality change, it minimizes the diff on an
upcoming patch that allows switching between instances of
ValueToValueMapTy on a single Mapper instance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266490 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoDon't skip splitSeparateComponents in eliminateDeadDefs for HoistSpillHelper::hoistAl...
Wei Mi [Fri, 15 Apr 2016 23:16:44 +0000 (23:16 +0000)]
Don't skip splitSeparateComponents in eliminateDeadDefs for HoistSpillHelper::hoistAllSpills.

Because HoistSpillHelper::hoistAllSpills is called in postOptimization, before the
patch we didn't want LiveRangeEdit::eliminateDeadDefs to call splitSeparateComponents
and generate unassigned new vregs. However, skipping splitSeparateComponents will make
verify-machineinstrs unhappy, so I remove the early return, and use
HoistSpillHelper::LRE_DidCloneVirtReg to assign physreg/stackslot for those new vregs.

In addition, some code reorganization to make class HoistSpillHelper privately inheriting
from LiveRangeEdit::Delegate possible. This is to be consistent with class RAGreedy and
class RegisterCoalescer.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266489 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoAdd ProfileData to required_libraries
Easwaran Raman [Fri, 15 Apr 2016 23:08:52 +0000 (23:08 +0000)]
Add ProfileData to required_libraries

This should fix ppc64be build breakage due to r266477

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266488 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[cfi] Support explicit sections for functions in cfi-icall.
Evgeniy Stepanov [Fri, 15 Apr 2016 22:55:38 +0000 (22:55 +0000)]
[cfi] Support explicit sections for functions in cfi-icall.

Allow explicit section for indirectly called functions in cfi-icall.
Jumptables for functions in the same type class must be contiguous, so they
always go to the default text section.

Fixes PR25079.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266486 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoConvert this sample-based-profiling testcase to use a NoDebug CU.
Adrian Prantl [Fri, 15 Apr 2016 22:05:38 +0000 (22:05 +0000)]
Convert this sample-based-profiling testcase to use a NoDebug CU.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266481 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] add a better warning for command line flags with -- (two dashes)
Kostya Serebryany [Fri, 15 Apr 2016 21:56:29 +0000 (21:56 +0000)]
[libFuzzer] add a better warning for command line flags with -- (two dashes)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266480 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSwitch lowering: don't add incoming PHI values from skipped bit test MBB's (PR27135)
Hans Wennborg [Fri, 15 Apr 2016 21:45:30 +0000 (21:45 +0000)]
Switch lowering: don't add incoming PHI values from skipped bit test MBB's (PR27135)

After r245976, LLVM will skip the last bit test case if knows it will always be
true. However, we would still erroneously update PHI nodes with incoming values
from the MBB that would perform the final bit test, causing -verify-machineinstrs
to fail.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266479 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoSelectionDAGISel: rangeify a loop
Hans Wennborg [Fri, 15 Apr 2016 21:45:09 +0000 (21:45 +0000)]
SelectionDAGISel: rangeify a loop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266478 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoReplace the use of MaxFunctionCount module flag
Easwaran Raman [Fri, 15 Apr 2016 21:39:58 +0000 (21:39 +0000)]
Replace the use of MaxFunctionCount module flag

Adds an interface to get ProfileSummary for a module and makes InlineCost use ProfileSummary to get max function count.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266477 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[libFuzzer] menion the git mirror in the docs
Kostya Serebryany [Fri, 15 Apr 2016 21:10:27 +0000 (21:10 +0000)]
[libFuzzer] menion the git mirror in the docs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266476 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[mips] More range-based for loops. NFC.
Vasileios Kalintiris [Fri, 15 Apr 2016 20:43:17 +0000 (20:43 +0000)]
[mips] More range-based for loops. NFC.

There are still a couple more inside the MIPS target. I opted for a single
commit in order to avoid spamming the list.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266472 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[mips] Use range-based for loops and simplify slightly the code. NFC.
Vasileios Kalintiris [Fri, 15 Apr 2016 20:18:48 +0000 (20:18 +0000)]
[mips] Use range-based for loops and simplify slightly the code. NFC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266471 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SystemZ] Call tryAddingSymbolicOperand in the disassembler
Ulrich Weigand [Fri, 15 Apr 2016 19:55:58 +0000 (19:55 +0000)]
[SystemZ] Call tryAddingSymbolicOperand in the disassembler

Use the tryAddingSymbolicOperand callback to attempt to present immediate
values in symbolic form when disassembling.  This is currently only used
for PC-relative immediates (which are most likely to be symbolic in the
SystemZ ISA).  Add new DecodeMethod types to allow distinguishing between
branch and non-branch instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266469 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoLet the DISubprogram in this test point to the right compile unit.
Adrian Prantl [Fri, 15 Apr 2016 19:38:14 +0000 (19:38 +0000)]
Let the DISubprogram in this test point to the right compile unit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266468 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoUpdate testcase to new debug metadata format.
Adrian Prantl [Fri, 15 Apr 2016 19:32:22 +0000 (19:32 +0000)]
Update testcase to new debug metadata format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266467 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[codeview] Dump char16_t and char32_t simple types
Reid Kleckner [Fri, 15 Apr 2016 18:26:45 +0000 (18:26 +0000)]
[codeview] Dump char16_t and char32_t simple types

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266465 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoARM: don't try to hoist constant RHS out of a division.
Tim Northover [Fri, 15 Apr 2016 18:17:18 +0000 (18:17 +0000)]
ARM: don't try to hoist constant RHS out of a division.

Divisions by a constant can be converted into multiplies which are usually
cheaper, but this isn't possible if the constant gets separated (particularly
in loops). Fix this by telling ConstantHoisting that the immediate in a DIV is
cheap.

I considered making the check generic, but neither AArch64 (strangely) nor x86
showed any benefit on the tests I had.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266464 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[AArch64] Add load/store pair instructions to getMemOpBaseRegImmOfsWidth().
Chad Rosier [Fri, 15 Apr 2016 18:09:10 +0000 (18:09 +0000)]
[AArch64] Add load/store pair instructions to getMemOpBaseRegImmOfsWidth().

This improves AA in the MI schduler when reason about paired instructions.

Phabricator Revision: http://reviews.llvm.org/D17098
PR26358

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266462 91177308-0d34-0410-b5e6-96231b3b80d8

8 years agoRevert "[Coverage] Prevent detection of false instantiations in case of macro expansion."
Igor Kudrin [Fri, 15 Apr 2016 17:53:48 +0000 (17:53 +0000)]
Revert "[Coverage] Prevent detection of false instantiations in case of macro expansion."

This reverts commit r266436 as it broke buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266458 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[ParallelCG] Add a new splitCodeGen() API which takes a TargetMachineFactory.
Davide Italiano [Fri, 15 Apr 2016 17:34:32 +0000 (17:34 +0000)]
[ParallelCG] Add a new splitCodeGen() API which takes a TargetMachineFactory.

This is a recommit of r266390 with a fix that will allow tests to pass
(hopefully). Before we got a StringRef to M->getTargetTriple() and right
after we moved the Module so we were referencing a dangling object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266456 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[SystemZ] Fix large tests broken by conditional returns.
Marcin Koscielnicki [Fri, 15 Apr 2016 17:24:40 +0000 (17:24 +0000)]
[SystemZ] Fix large tests broken by conditional returns.

These were broken by D17339.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266454 91177308-0d34-0410-b5e6-96231b3b80d8

8 years ago[InstCombine] Don't transform compares of calls to functions named fabs{f,l,}
David Majnemer [Fri, 15 Apr 2016 17:21:03 +0000 (17:21 +0000)]
[InstCombine] Don't transform compares of calls to functions named fabs{f,l,}

InstCombine wants to optimize compares of calls to fabs with zero.
However, we didn't have the necessary legality checking to verify that
the function call had the same behavior as fabs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266452 91177308-0d34-0410-b5e6-96231b3b80d8