]> granicus.if.org Git - llvm/log
llvm
7 years agoUnbreak build of the wasm backend after r300463.
Benjamin Kramer [Mon, 17 Apr 2017 19:08:41 +0000 (19:08 +0000)]
Unbreak build of the wasm backend after r300463.

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

7 years agoBitcode: Add missing build dep to fix shlib build.
Peter Collingbourne [Mon, 17 Apr 2017 18:53:27 +0000 (18:53 +0000)]
Bitcode: Add missing build dep to fix shlib build.

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

7 years ago[APInt] Remove self move check from move assignment operator
Craig Topper [Mon, 17 Apr 2017 18:44:27 +0000 (18:44 +0000)]
[APInt] Remove self move check from move assignment operator

This was added to work around a bug in MSVC 2013's implementation of stable_sort. That bug has been fixed as of MSVC 2015 so we shouldn't need this anymore.

Technically the current implementation has undefined behavior because we only protect the deleting of the pVal array with the self move check. There is still a memcpy of that.VAL to VAL that isn't protected. In the case of self move those are the same local and memcpy is undefined for src and dst overlapping.

This reduces the size of the opt binary on my local x86-64 build by about 4k.

Differential Revision: https://reviews.llvm.org/D32116

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

7 years ago[IR] Implement DataLayout::getPointerTypeSizeInBits using getPointerSizeInBits directly
Craig Topper [Mon, 17 Apr 2017 18:22:36 +0000 (18:22 +0000)]
[IR] Implement DataLayout::getPointerTypeSizeInBits using getPointerSizeInBits directly

Currently we use getTypeSizeInBits which contains a switch statement to dispatch based on what the Type is. We know we always have a pointer type here, but the compiler isn't able to figure out that out to remove the switch.

This patch changes it to just call handle the pointer type directly by calling getPointerSizeInBits without going through a switch.

getPointerTypeSizeInBits is called pretty often, particularly by getOrEnforceKnownAlignment which is used by InstCombine. This should speed that up a little bit.

Differential Revision: https://reviews.llvm.org/D31841

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

7 years agoAArch64: put nonlazybind special handling behind a flag for now.
Tim Northover [Mon, 17 Apr 2017 18:18:47 +0000 (18:18 +0000)]
AArch64: put nonlazybind special handling behind a flag for now.

It's basically a terrible idea anyway but objc_msgSend gets emitted like that.
We can decide on a better way to deal with it in the unlikely event that anyone
actually uses it.

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

7 years agoAMDGPU: Test handling of R_AMDGPU_ABS64 in RelocVisitor
Konstantin Zhuravlyov [Mon, 17 Apr 2017 18:12:45 +0000 (18:12 +0000)]
AMDGPU: Test handling of R_AMDGPU_ABS64 in RelocVisitor

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

7 years ago[IR] Put the Use list waymarking bits in the bit positions documentation says they...
Craig Topper [Mon, 17 Apr 2017 18:12:30 +0000 (18:12 +0000)]
[IR] Put the Use list waymarking bits in the bit positions documentation says they are using

The documentation for the waymarking algorithm says that we use the lower 2 bits of Use::Prev to store the way marking bits. But because we use a PointerIntPair with the default PointerLikeTypeTraits, we're using bits 2:1 on 64-bit targets.

There's also a trick employed for distinguishing Users that have Uses stored with them and Users that have Uses stored in a separate array. The documentation says we use the LSB of the first byte of the real User object or the User* that occurs at the end of the Use array. But again due to the PointerLikeTypeTraits we're really using bit 2(64-bit) or bit 1(32-bit) and not the LSB. This is a little worrying because the first byte of the User object is the vtable ptr so we're assuming the vtable has 8 byte or 4 byte alignment where what is documented would only require 2 byte alignment.

This patch provides a custom traits override for these two cases to put the bits where the documentation says they are. It also has the side effect of removing some shifts from the waymarking traversal implementation.

Differential Revision: https://reviews.llvm.org/D31733

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

7 years agoAMDGPU: Set CodePointerSize to 8 for amdgcn
Konstantin Zhuravlyov [Mon, 17 Apr 2017 18:02:09 +0000 (18:02 +0000)]
AMDGPU: Set CodePointerSize to 8 for amdgcn

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

7 years agoObject: Use offset+size as the irsymtab string representation.
Peter Collingbourne [Mon, 17 Apr 2017 17:55:24 +0000 (17:55 +0000)]
Object: Use offset+size as the irsymtab string representation.

This is consistent with the bitcode string table.

Differential Revision: https://reviews.llvm.org/D31922

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

7 years agoBitcode: Add a string table to the bitcode format.
Peter Collingbourne [Mon, 17 Apr 2017 17:51:36 +0000 (17:51 +0000)]
Bitcode: Add a string table to the bitcode format.

Add a top-level STRTAB block containing a string table blob, and start storing
strings for module codes FUNCTION, GLOBALVAR, ALIAS, IFUNC and COMDAT in
the string table.

This change allows us to share names between globals and comdats as well
as between modules, and improves the efficiency of loading bitcode files by
no longer using a bit encoding for symbol names. Once we start writing the
irsymtab to the bitcode file we will also be able to share strings between
it and the module.

On my machine, link time for Chromium for Linux with ThinLTO decreases by
about 7% for no-op incremental builds or about 1% for full builds. Total
bitcode file size decreases by about 3%.

As discussed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2017-April/111732.html

Differential Revision: https://reviews.llvm.org/D31838

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

7 years agoDistinguish between code pointer size and DataLayout::getPointerSize() in DWARF info...
Konstantin Zhuravlyov [Mon, 17 Apr 2017 17:41:25 +0000 (17:41 +0000)]
Distinguish between code pointer size and DataLayout::getPointerSize() in DWARF info generation

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

7 years agoAArch64: support nonlazybind
Tim Northover [Mon, 17 Apr 2017 17:27:56 +0000 (17:27 +0000)]
AArch64: support nonlazybind

It's almost certainly not a good idea to actually use it in most cases (there's
a pretty large code size overhead on AArch64), but we can't do those
experiments until it's supported.

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

7 years agoIntroduce APInt::isSignBitSet/isSignBitClear. Use in place isSignBitSet in place...
Craig Topper [Mon, 17 Apr 2017 16:38:20 +0000 (16:38 +0000)]
Introduce APInt::isSignBitSet/isSignBitClear. Use in place isSignBitSet in place of isNegative in known bits tracking.

This makes statements like KnownZero.isNegative() (which means the value we're tracking is positive) less confusing.

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

7 years agoAMDGPU: SimplifyDemandedElts for image intrinsics
Matt Arsenault [Mon, 17 Apr 2017 15:12:44 +0000 (15:12 +0000)]
AMDGPU: SimplifyDemandedElts for image intrinsics

Causes some VGPR usage improvements in shaderdb, but
introduces some SGPR spilling regressions due to random
scheduling changes later.

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

7 years ago[LCSSA] Don't insert tokens into the worklist at all.
Davide Italiano [Mon, 17 Apr 2017 14:32:05 +0000 (14:32 +0000)]
[LCSSA] Don't insert tokens into the worklist at all.

We're gonna skip them anyway, so there's no point in inserting them
in the first place.

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

7 years agoIntroducing LLVMMetadataRef
Amaury Sechet [Mon, 17 Apr 2017 11:52:54 +0000 (11:52 +0000)]
Introducing LLVMMetadataRef

Summary:
This seems like an uncontroversial first step toward providing access to the metadata hierarchy that now exists in LLVM. This should allow for good debug info support from C.

Future plans are to deprecate API that take mixed bags of values and metadata (mainly the LLVMMDNode family of functions) and migrate the rest toward the use of LLVMMetadataRef.

Once this is in place, mapping of DIBuilder will be able to start.

Reviewers: mehdi_amini, echristo, whitequark, jketema, Wallbraker

Reviewed By: Wallbraker

Subscribers: Eugene.Zelenko, axw, mehdi_amini, llvm-commits

Differential Revision: https://reviews.llvm.org/D19448

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

7 years ago[LoopPeeling] Get rid of Phis that become invariant after N steps
Max Kazantsev [Mon, 17 Apr 2017 09:52:02 +0000 (09:52 +0000)]
[LoopPeeling] Get rid of Phis that become invariant after N steps

This patch is a generalization of the improvement introduced in rL296898.
Previously, we were able to peel one iteration of a loop to get rid of a Phi that becomes
an invariant on the 2nd iteration. In more general case, if a Phi becomes invariant after
N iterations, we can peel N times and turn it into invariant.
In order to do this, we for every Phi in loop's header we define the Invariant Depth value
which is calculated as follows:

Given %x = phi <Inputs from above the loop>, ..., [%y, %back.edge].

If %y is a loop invariant, then Depth(%x) = 1.
If %y is a Phi from the loop header, Depth(%x) = Depth(%y) + 1.
Otherwise, Depth(%x) is infinite.
Notice that if we peel a loop, all Phis with Depth = 1 become invariants,
and all other Phis with finite depth decrease the depth by 1.
Thus, peeling N first iterations allows us to turn all Phis with Depth <= N
into invariants.

Reviewers: reames, apilipenko, mkuper, skatkov, anna, sanjoy

Reviewed By: sanjoy

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D31613

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

7 years ago[BPI] NFC: reorder ifs to bail out earlier
Serguei Katkov [Mon, 17 Apr 2017 06:39:47 +0000 (06:39 +0000)]
[BPI] NFC: reorder ifs to bail out earlier

This is non-functional change to re-order if statements to bail out earlier
from unreachable and ColdCall heuristics.

Reviewers: sanjoy, reames, junbuml, vsk, chandlerc

Reviewed By: chandlerc

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D31704

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

7 years ago[LoopPeeling] Fix condition for phi-eliminating peeling
Max Kazantsev [Mon, 17 Apr 2017 05:38:28 +0000 (05:38 +0000)]
[LoopPeeling] Fix condition for phi-eliminating peeling

When peeling loops basing on phis becoming invariants, we make a wrong loop size check.
UP.Threshold should be compared against the total numbers of instructions after the transformation,
which is equal to 2 * LoopSize in case of peeling one iteration.
We should also check that the maximum allowed number of peeled iterations is not zero.

Reviewers: sanjoy, anna, reames, mkuper

Reviewed By: mkuper

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D31753

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

7 years ago[BPI] Use metadata info before any other heuristics
Serguei Katkov [Mon, 17 Apr 2017 04:33:04 +0000 (04:33 +0000)]
[BPI] Use metadata info before any other heuristics

Metadata potentially is more precise than any heuristics we use, so
it makes sense to use first metadata info if it is available. However it makes
sense to examine it against other strong heuristics like unreachable one.
If edge coming to unreachable block has higher probability then it is expected
by unreachable heuristic then we use heuristic and remaining probability is
distributed among other reachable blocks equally.

An example where metadata might be more strong then unreachable heuristic is
as follows: it is possible that there are two branches and for the branch A
metadata says that its probability is (0, 2^25). For the branch B
the probability is (1, 2^25).
So the expectation is that first edge of B is hotter than first edge of A
because first edge of A did not executed at least once.
If first edge of A points to the unreachable block then using the unreachable
heuristics we'll set the probability for A to (1, 2^20) and now edge of A
becomes hotter than edge of B.
This is unexpected behavior.

This fixed the biggest part of https://bugs.llvm.org/show_bug.cgi?id=32214

Reviewers: sanjoy, junbuml, vsk, chandlerc

Reviewed By: chandlerc

Subscribers: llvm-commits, reames, davidxl

Differential Revision: https://reviews.llvm.org/D30631

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

7 years ago[InstCombine] Simplify 1/X for vectors.
Craig Topper [Mon, 17 Apr 2017 03:41:47 +0000 (03:41 +0000)]
[InstCombine] Simplify 1/X for vectors.

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

7 years ago[InstCombine] Add test cases for missing support for simplifying 1/X for vectors...
Craig Topper [Mon, 17 Apr 2017 03:41:44 +0000 (03:41 +0000)]
[InstCombine] Add test cases for missing support for simplifying 1/X for vectors. NFC

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

7 years ago[InstCombine] Add support for vector srem->urem.
Craig Topper [Mon, 17 Apr 2017 01:51:24 +0000 (01:51 +0000)]
[InstCombine] Add support for vector srem->urem.

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

7 years ago[InstCombine] Add missing testcases for srem->urem conversion. The vector version...
Craig Topper [Mon, 17 Apr 2017 01:51:21 +0000 (01:51 +0000)]
[InstCombine] Add missing testcases for srem->urem conversion. The vector version isn't currently supported. NFC

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

7 years ago[InstCombine] Add support for turning vector sdiv into udiv.
Craig Topper [Mon, 17 Apr 2017 01:51:19 +0000 (01:51 +0000)]
[InstCombine] Add support for turning vector sdiv into udiv.

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

7 years ago[InstCombine] Add test cases for missing support for turning vector sdiv into udiv...
Craig Topper [Mon, 17 Apr 2017 01:51:16 +0000 (01:51 +0000)]
[InstCombine] Add test cases for missing support for turning vector sdiv into udiv. NFC

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

7 years ago[LCSSA] Simplify a loop. NFCI.
Davide Italiano [Mon, 17 Apr 2017 00:02:45 +0000 (00:02 +0000)]
[LCSSA] Simplify a loop. NFCI.

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

7 years ago[InstCombine][ValueTracking] When computing known bits for Srem make sure we don...
Craig Topper [Sun, 16 Apr 2017 21:46:12 +0000 (21:46 +0000)]
[InstCombine][ValueTracking] When computing known bits for Srem make sure we don't compute known bits for the LHS twice.

If we already called computeKnownBits for the RHS being a constant power of 2, we've already computed everything we can and should just stop. I think previously we would still recurse if we had determined the result was negative or had not determined the sign bit at all.

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

7 years ago[LCSSA] Fix non-determinism due to iterating over a SmallPtrSet.
Davide Italiano [Sun, 16 Apr 2017 21:07:04 +0000 (21:07 +0000)]
[LCSSA] Fix non-determinism due to iterating over a SmallPtrSet.

Use a SmallSetVector instead.

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

7 years ago[InstCombine] In SimplifyDemandedUseBits, don't bother to mask known bits of constant...
Craig Topper [Sun, 16 Apr 2017 20:55:58 +0000 (20:55 +0000)]
[InstCombine] In SimplifyDemandedUseBits, don't bother to mask known bits of constants with DemandedMask.

Just because we didn't demand them doesn't mean they aren't known.

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

7 years ago[X86] Remove special handling for 16 bit for A asm constraints.
Benjamin Kramer [Sun, 16 Apr 2017 20:13:08 +0000 (20:13 +0000)]
[X86] Remove special handling for 16 bit for A asm constraints.

Our 16 bit support is assembler-only + the terrible hack that is
.code16gcc. Simply using 32 bit registers does the right thing for the
latter.

Fixes PR32681.

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

7 years agoMemorySSA: Stop tracking def-or-use blocks.
Bryant Wong [Sun, 16 Apr 2017 19:45:51 +0000 (19:45 +0000)]
MemorySSA: Stop tracking def-or-use blocks.

The tracking is unused, since MemoryPhis are not pruned as of r282419.

Differential Revision: https://reviews.llvm.org/D32121

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

7 years ago[InstSimplify] improve getTrue/getFalse; NFCI
Sanjay Patel [Sun, 16 Apr 2017 17:43:11 +0000 (17:43 +0000)]
[InstSimplify] improve getTrue/getFalse; NFCI

The ConstantInt version has the same assert, and using null/allOnes is likely less efficient.
The only advantage of these local variants (and there's probably a better way to achieve this?)
is to save typing "ConstantInt::" over and over.

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

7 years agoGarbage collect HAVE_EXECINFO_H from config.h.cmake after r300062. NFCI.
Dimitry Andric [Sun, 16 Apr 2017 17:22:44 +0000 (17:22 +0000)]
Garbage collect HAVE_EXECINFO_H from config.h.cmake after r300062. NFCI.

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

7 years ago[Constants] simplify get true/false code; NFCI
Sanjay Patel [Sun, 16 Apr 2017 17:00:21 +0000 (17:00 +0000)]
[Constants] simplify get true/false code; NFCI

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

7 years ago[X86][X86 intrinsics]Folding cmp(sub(a,b),0) into cmp(a,b) optimization
Michael Zuckerman [Sun, 16 Apr 2017 13:26:08 +0000 (13:26 +0000)]
[X86][X86 intrinsics]Folding cmp(sub(a,b),0) into cmp(a,b) optimization

This patch adds new optimization (Folding cmp(sub(a,b),0) into cmp(a,b))
to instCombineCall pass and was written specific for X86 CMP intrinsics.

Differential Revision: https://reviews.llvm.org/D31398

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

7 years ago[APInt] Fix a bug in lshr by a value more than 64 bits above the bit width.
Craig Topper [Sun, 16 Apr 2017 01:03:51 +0000 (01:03 +0000)]
[APInt] Fix a bug in lshr by a value more than 64 bits above the bit width.

This was throwing an assert because we determined the intra-word shift amount by subtracting the size of the full word shift from the total shift amount. But we failed to account for the fact that we clipped the full word shifts by total words first. To fix this just calculate the intra-word shift as the remainder of dividing by bits per word.

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

7 years agoUse correct registers for "A" inline asm constraint
Dimitry Andric [Sat, 15 Apr 2017 22:15:01 +0000 (22:15 +0000)]
Use correct registers for "A" inline asm constraint

Summary:
In PR32594, inline assembly using the 'A' constraint on x86_64 causes
llvm to crash with a "Cannot select" stack trace.  This is because
`X86TargetLowering::getRegForInlineAsmConstraint` hardcodes that 'A'
means the EAX and EDX registers.

However, on x86_64 it means the RAX and RDX registers, and on 16-bit x86
(ia16?) it means the old AX and DX registers.

Add new register classes in `X86RegisterInfo.td` to support these cases,
and amend the logic in `getRegForInlineAsmConstraint` to cope with
different subtargets.  Also add a test case, derived from PR32594.

Reviewers: craig.topper, qcolombet, RKSimon, ab

Reviewed By: ab

Subscribers: ab, emaste, royger, llvm-commits

Differential Revision: https://reviews.llvm.org/D31902

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

7 years ago[InstCombine] allow (X != C1 && X != C2) and similar patterns to match splat vector...
Sanjay Patel [Sat, 15 Apr 2017 17:55:06 +0000 (17:55 +0000)]
[InstCombine] allow (X != C1 && X != C2) and similar patterns to match splat vector constants

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

7 years ago[InstCombine] add tests to show missing transforms for vectors; NFC
Sanjay Patel [Sat, 15 Apr 2017 17:50:45 +0000 (17:50 +0000)]
[InstCombine] add tests to show missing transforms for vectors; NFC

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

7 years agoTidy checking for the soft float attribute.
Eric Christopher [Sat, 15 Apr 2017 06:14:52 +0000 (06:14 +0000)]
Tidy checking for the soft float attribute.

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

7 years agoCache the DataLayout rather than looking it up frequently.
Eric Christopher [Sat, 15 Apr 2017 06:14:50 +0000 (06:14 +0000)]
Cache the DataLayout rather than looking it up frequently.

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

7 years ago[ProfileData] Unify getInstrProf*SectionName helpers
Vedant Kumar [Sat, 15 Apr 2017 00:09:57 +0000 (00:09 +0000)]
[ProfileData] Unify getInstrProf*SectionName helpers

This is a version of D32090 that unifies all of the
`getInstrProf*SectionName` helper functions. (Note: the build failures
which D32090 would have addressed were fixed with r300352.)

We should unify these helper functions because they are hard to use in
their current form. E.g we recently introduced more helpers to fix
section naming for COFF files. This scheme doesn't totally succeed at
hiding low-level details about section naming, so we should switch to an
API that is easier to maintain.

This is not an NFC commit because it fixes llvm-cov's testing support
for COFF files (this falls out of the API change naturally). This is an
area where we lack tests -- I will see about adding one as a follow up.

Testing: check-clang, check-profile, check-llvm.

Differential Revision: https://reviews.llvm.org/D32097

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

7 years agoGeneralize SCEV's unit testing helper a bit
Sanjoy Das [Fri, 14 Apr 2017 23:47:53 +0000 (23:47 +0000)]
Generalize SCEV's unit testing helper a bit

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

7 years ago[InstCombine] MakeAnd/Or/Xor handling to reuse previous APInt computations
Craig Topper [Fri, 14 Apr 2017 22:34:14 +0000 (22:34 +0000)]
[InstCombine] MakeAnd/Or/Xor handling to reuse previous APInt computations

When checking if we should return a constant, we create some temporary APInts to see if we know all bits. But the exact computations we do are needed in several other locations in the same code.

This patch moves them to named temporaries so we can reuse them.

Ideally we'd write directly to KnownZero/One, but we currently seem to only write those variables after all the simplifications checks and I didn't want to change that with this patch.

Differential Revision: https://reviews.llvm.org/D32094

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

7 years ago[RDF] No longer ignore implicit defs or uses on any instructions
Krzysztof Parzyszek [Fri, 14 Apr 2017 21:19:17 +0000 (21:19 +0000)]
[RDF] No longer ignore implicit defs or uses on any instructions

This used to be a Hexagon-specific treatment, but is no longer needed
since it's switched to subregister liveness tracking.

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

7 years ago[RDF] Correctly enumerate reg units for reg masks
Krzysztof Parzyszek [Fri, 14 Apr 2017 21:17:36 +0000 (21:17 +0000)]
[RDF] Correctly enumerate reg units for reg masks

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

7 years ago[IR] Make paramHasAttr to use arg indices instead of attr indices
Reid Kleckner [Fri, 14 Apr 2017 20:19:02 +0000 (20:19 +0000)]
[IR] Make paramHasAttr to use arg indices instead of attr indices

This avoids the confusing 'CS.paramHasAttr(ArgNo + 1, Foo)' pattern.

Previously we were testing return value attributes with index 0, so I
introduced hasReturnAttr() for that use case.

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

7 years ago[libFuzzer] more trophies
Kostya Serebryany [Fri, 14 Apr 2017 20:11:16 +0000 (20:11 +0000)]
[libFuzzer] more trophies

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

7 years ago[WebAssembly] Improve readobj and nm support for wasm
Sam Clegg [Fri, 14 Apr 2017 19:50:44 +0000 (19:50 +0000)]
[WebAssembly] Improve readobj and nm support for wasm

Now that the libObect support for wasm is better we can
have readobj and nm produce more useful output too.

Differential Revision: https://reviews.llvm.org/D31514

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

7 years ago[InstCombine] (X != C1 && X != C2) --> (X | (C1 ^ C2)) != C2
Sanjay Patel [Fri, 14 Apr 2017 19:23:50 +0000 (19:23 +0000)]
[InstCombine] (X != C1 && X != C2) --> (X | (C1 ^ C2)) != C2
...when C1 differs from C2 by one bit and C1 <u C2:
http://rise4fun.com/Alive/Vuo

And move related folds to a helper function. This reduces code duplication and
will make it easier to remove the scalar-only restriction as a follow-up step.

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

7 years ago[InstCombine] Support folding a subtract with a constant LHS into a phi node
Craig Topper [Fri, 14 Apr 2017 19:20:12 +0000 (19:20 +0000)]
[InstCombine] Support folding a subtract with a constant LHS into a phi node

We currently only support folding a subtract into a select but not a PHI. This fixes that.

I had to fix an assumption in FoldOpIntoPhi that assumed the PHI node was always in operand 0. Now we pass it in like we do for FoldOpIntoSelect. But we still require some dancing to find the Constant when we create the BinOp or ConstantExpr. This is based code is similar to what we do for selects.

Since I touched all call sites, this also renames FoldOpIntoPhi to foldOpIntoPhi to match coding standards.

Differential Revision: https://reviews.llvm.org/D31686

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

7 years ago[AMDGPU] set read_only access qualifier for pointers
Stanislav Mekhanoshin [Fri, 14 Apr 2017 19:11:40 +0000 (19:11 +0000)]
[AMDGPU] set read_only access qualifier for pointers

If a kernel's pointer argument is known to be readonly
set access qualifier accordingly. This allows RT not to
flush caches before dispatches.

Differential Revision: https://reviews.llvm.org/D32091

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

7 years ago[Test commit] Cleanup some whitespace in a test file
Sam Clegg [Fri, 14 Apr 2017 18:43:57 +0000 (18:43 +0000)]
[Test commit] Cleanup some whitespace in a test file

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

7 years ago[InstCombine] Regenerate test checks using script. NFC
Craig Topper [Fri, 14 Apr 2017 18:42:55 +0000 (18:42 +0000)]
[InstCombine] Regenerate test checks using script. NFC

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

7 years ago[InstCombine] add/move tests for and/or-of-icmps equality folds; NFC
Sanjay Patel [Fri, 14 Apr 2017 18:19:27 +0000 (18:19 +0000)]
[InstCombine] add/move tests for and/or-of-icmps equality folds; NFC

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

7 years ago[ValueTracking] Avoid undefined behavior in unittest by not making a named ArrayRef...
Craig Topper [Fri, 14 Apr 2017 17:59:19 +0000 (17:59 +0000)]
[ValueTracking] Avoid undefined behavior in unittest by not making a named ArrayRef from a std::initializer_list

One of the ValueTracking unittests creates a named ArrayRef initialized by a std::initializer_list. The underlying array for an std::initializer_list is only guaranteed to have a lifetime as long as the initializer_list object itself. So this can leave the ArrayRef pointing at an array that no long exists.

This fixes this to just create an explicit array instead of an ArrayRef.

Differential Revision: https://reviews.llvm.org/D32089

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

7 years ago[InstCombine] Refactor SimplifyUsingDistributiveLaws to more explicitly skip code...
Craig Topper [Fri, 14 Apr 2017 17:55:41 +0000 (17:55 +0000)]
[InstCombine] Refactor SimplifyUsingDistributiveLaws to more explicitly skip code when LHS/RHS aren't BinaryOperators

Currently this code always makes 2 or 3 calls to tryFactorization regardless of whether the LHS/RHS are BinaryOperators. We make 3 calls when both operands are BinaryOperators with the same opcode. Or surprisingly, when neither are BinaryOperators. This is because getBinOpsForFactorization returns Instruction::BinaryOpsEnd when the operand is not a BinaryOperator. If both LHS and RHS are not BinaryOperators then they both have an Opcode of Instruction::BinaryOpsEnd. When this happens we rely on tryFactorization to early out due to A/B/C/D being null. Similar behavior occurs for the other calls, we rely on getBinOpsForFactorization having made A/B or C/D null to get tryFactorization to early out.

We also rely on these null checks to check the result of getIdentityValue and early out for it.

This patches refactors this to pull these checks up to SimplifyUsingDistributiveLaws so we don't rely on BinaryOpsEnd as a sentinel or this A/B/C/D null behavior. I think this makes this code easier to reason about. Should also give a tiny performance improvement for cases where the LHS or RHS isn't a BinaryOperator.

Differential Revision: https://reviews.llvm.org/D31913

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

7 years ago[Profile] Make host tool aware of object format when quering prof section names
Xinliang David Li [Fri, 14 Apr 2017 17:48:40 +0000 (17:48 +0000)]
[Profile] Make host tool aware of object format when quering prof section names

Differential Revision: https://reviews.llvm.org/D32073

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

7 years agoUpdate tests for the patch.
Alexey Bataev [Fri, 14 Apr 2017 17:47:07 +0000 (17:47 +0000)]
Update tests for the patch.

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

7 years agoUse range-for in a few places
Sanjoy Das [Fri, 14 Apr 2017 17:42:12 +0000 (17:42 +0000)]
Use range-for in a few places

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

7 years agoRewrite SCEV Normalization using SCEVRewriteVisitor; NFC
Sanjoy Das [Fri, 14 Apr 2017 17:42:10 +0000 (17:42 +0000)]
Rewrite SCEV Normalization using SCEVRewriteVisitor; NFC

Removes all of the boilerplate, cache management etc. from
ScalarEvolutionNormalization, and keeps only the interesting bits.

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

7 years agoMake SCEVRewriteVisitor smarter about when it trys to create SCEVs
Sanjoy Das [Fri, 14 Apr 2017 17:42:08 +0000 (17:42 +0000)]
Make SCEVRewriteVisitor smarter about when it trys to create SCEVs

This change really saves just one foldingset lookup, but makes
SCEVRewriteVisitor "feature compatible" with the handwritten logic in
ScalarEvolutionNormalization, so that I can change
ScalarEvolutionNormalization to use SCEVRewriteVisitor in a next step.

This is a non-functional change, but _may_ improve performance in some
pathological cases, but that's unlikely.

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

7 years agoAdd missing #include
Sanjoy Das [Fri, 14 Apr 2017 17:25:23 +0000 (17:25 +0000)]
Add missing #include

Again, caught by the modules build.

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

7 years ago[RDF] Switch RegisterAggr to a bit vector of register units
Krzysztof Parzyszek [Fri, 14 Apr 2017 17:25:13 +0000 (17:25 +0000)]
[RDF] Switch RegisterAggr to a bit vector of register units

This avoids many complications related to the complex register
aliasing schemes.

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

7 years ago[FunctionImport] assert(false) -> llvm_unreachable(). NFCI.
Davide Italiano [Fri, 14 Apr 2017 17:22:02 +0000 (17:22 +0000)]
[FunctionImport] assert(false) -> llvm_unreachable(). NFCI.

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

7 years agoRemove "#if 0"ed out assert
Sanjoy Das [Fri, 14 Apr 2017 16:47:15 +0000 (16:47 +0000)]
Remove "#if 0"ed out assert

It won't compile after the recent changes I've made, and I think
keeping it in provides very little value.

Instead I've added (in an earlier commit) a C++ unit test to check the
Denormalize(Normalized(X)) == X property for specific instances of X,
which is what the assert was trying to do anyway.

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

7 years agoDelete some unnecessary boilerplate
Sanjoy Das [Fri, 14 Apr 2017 16:47:12 +0000 (16:47 +0000)]
Delete some unnecessary boilerplate

The PostIncTransform class was not pulling its weight, so delete it
and use free functions instead.

This also makes the use of `function_ref` more idiomatic.  We were
storing an instance of function_ref in the PostIncTransform class
before, which was fine in that specific case, but the usage after this
change is more obviously okay.

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

7 years ago[RDF] Refine propagation of reached uses in liveness computation
Krzysztof Parzyszek [Fri, 14 Apr 2017 16:33:54 +0000 (16:33 +0000)]
[RDF] Refine propagation of reached uses in liveness computation

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

7 years agoAdd missing #include for STLExtras
Sanjoy Das [Fri, 14 Apr 2017 16:28:12 +0000 (16:28 +0000)]
Add missing #include for STLExtras

Looks like earlier I was relying on #include ordering in files that
used ScalarEvolutionNormalization.h.

Found thanks to the selfhost modules buildbot!

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

7 years ago[Hexagon] Fix a latent problem with interpreting live-in lane masks
Krzysztof Parzyszek [Fri, 14 Apr 2017 16:21:55 +0000 (16:21 +0000)]
[Hexagon] Fix a latent problem with interpreting live-in lane masks

A non-zero lane mask on a register with no subregister means that the
whole register is live-in. It is equivalent to a full mask.

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

7 years agoUse range for
Sanjoy Das [Fri, 14 Apr 2017 15:50:19 +0000 (15:50 +0000)]
Use range for

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

7 years agoSimplify PostIncTransform further; NFC
Sanjoy Das [Fri, 14 Apr 2017 15:50:07 +0000 (15:50 +0000)]
Simplify PostIncTransform further; NFC

Instead of having two ways to check if an add recurrence needs to be
normalized, just pass in one predicate to decide that.

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

7 years agoAdd a unit test for SCEV Normalization
Sanjoy Das [Fri, 14 Apr 2017 15:50:04 +0000 (15:50 +0000)]
Add a unit test for SCEV Normalization

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

7 years agoTighten the API for ScalarEvolutionNormalization
Sanjoy Das [Fri, 14 Apr 2017 15:49:59 +0000 (15:49 +0000)]
Tighten the API for ScalarEvolutionNormalization

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

7 years agoRemove NormalizeAutodetect; NFC
Sanjoy Das [Fri, 14 Apr 2017 15:49:53 +0000 (15:49 +0000)]
Remove NormalizeAutodetect; NFC

It is cleaner to have a callback based system where the logic of
whether an add recurrence is normalized or not lives on IVUsers.

This is one step in a multi-step cleanup.

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

7 years ago[Hexagon] Make a couple of passes compliant with -opt-bisect-limit
Krzysztof Parzyszek [Fri, 14 Apr 2017 15:26:34 +0000 (15:26 +0000)]
[Hexagon] Make a couple of passes compliant with -opt-bisect-limit

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

7 years ago[Bugpoint] Use boolean AND instead of bitwise AND (PR32660)
Simon Pilgrim [Fri, 14 Apr 2017 15:21:15 +0000 (15:21 +0000)]
[Bugpoint] Use boolean AND instead of bitwise AND (PR32660)

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

7 years ago[X86][SSE] Update MOVNTDQA non-temporal loads to generic implementation (LLVM)
Simon Pilgrim [Fri, 14 Apr 2017 15:05:35 +0000 (15:05 +0000)]
[X86][SSE] Update MOVNTDQA non-temporal loads to generic implementation (LLVM)

MOVNTDQA non-temporal aligned vector loads can be correctly represented using generic builtin loads, allowing us to remove the existing x86 intrinsics.

Clang companion patch: D31766.

Differential Revision: https://reviews.llvm.org/D31767

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

7 years agoFix missing virtual destructor to silence build warning.
Nirav Dave [Fri, 14 Apr 2017 13:34:33 +0000 (13:34 +0000)]
Fix missing virtual destructor to silence build warning.

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

7 years agoReorder StoreMergeCandidates to run faster. NFCI.
Nirav Dave [Fri, 14 Apr 2017 13:34:30 +0000 (13:34 +0000)]
Reorder StoreMergeCandidates to run faster. NFCI.

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

7 years ago[AMDGPU][MC] Corrected ds_write_src2_* to require one offset instead of two.
Dmitry Preobrazhensky [Fri, 14 Apr 2017 12:28:07 +0000 (12:28 +0000)]
[AMDGPU][MC] Corrected ds_write_src2_* to require one offset instead of two.

Fixed bug 32551: https://bugs.llvm.org//show_bug.cgi?id=32551

Reviewers: vpykhtin

Differential Revision: https://reviews.llvm.org/D31809

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

7 years ago[AMDGPU][MC] Enabled constants for src operands of s_cbranch_g_fork
Dmitry Preobrazhensky [Fri, 14 Apr 2017 11:52:26 +0000 (11:52 +0000)]
[AMDGPU][MC] Enabled constants for src operands of s_cbranch_g_fork

Fixed bug 32619: https://bugs.llvm.org//show_bug.cgi?id=32619

Reviewers: artem.tamazov, vpykhtin

Differential Revision: https://reviews.llvm.org/D31973

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

7 years agoFix for PR#30562: Selection DAG error: Detected cycle in SelectionDAG.
Andrew V. Tischenko [Fri, 14 Apr 2017 09:17:09 +0000 (09:17 +0000)]
Fix for PR#30562: Selection DAG error: Detected cycle in SelectionDAG.
Patch by Dinar Temirbulatov

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

7 years agoAdd more test cases for StringRef::edit_distance
Alex Denisov [Fri, 14 Apr 2017 08:34:32 +0000 (08:34 +0000)]
Add more test cases for StringRef::edit_distance

Example strings taken from here: http://www.let.rug.nl/~kleiweg/lev/

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

7 years agoThis patch closes PR#32216: Better testing of schedule model instruction latencies...
Andrew V. Tischenko [Fri, 14 Apr 2017 07:44:23 +0000 (07:44 +0000)]
This patch closes PR#32216: Better testing of schedule model instruction latencies/throughputs.
The details are here: https://reviews.llvm.org/D30941

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

7 years ago[LV] Remove implicit single basic block assumption
Gil Rapaport [Fri, 14 Apr 2017 07:30:23 +0000 (07:30 +0000)]
[LV] Remove implicit single basic block assumption

This patch is part of D28975's breakdown - no change in output intended.

LV's code currently assumes the vectorized loop is a single basic block up
until predicateInstructions() is called. This patch removes two manifestations
of this assumption (loop phi incoming values, dominator tree update) by
replacing the use of vectorLoopBody with the vectorized loop's latch/header.

Differential Revision: https://reviews.llvm.org/D32040

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

7 years ago[ValueTracking] Calculate the KnownZeros for Intrinsic::ctpop without using a tempora...
Craig Topper [Fri, 14 Apr 2017 06:43:34 +0000 (06:43 +0000)]
[ValueTracking] Calculate the KnownZeros for Intrinsic::ctpop without using a temporary APInt to count leading zeros on.

The APInt was created from an 'unsigned' and we just wanted to know how many bits the value needed to represent it. We can just use Log2_32 from MathExtras.h to get the info.

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

7 years ago[ValueTracking] Use APInt::isNegative(). NFC
Craig Topper [Fri, 14 Apr 2017 06:43:32 +0000 (06:43 +0000)]
[ValueTracking] Use APInt::isNegative(). NFC

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

7 years ago[ValueTracking] Use APInt::sext instead of zext and setBitsFrom. NFC
Craig Topper [Fri, 14 Apr 2017 06:43:29 +0000 (06:43 +0000)]
[ValueTracking] Use APInt::sext instead of zext and setBitsFrom. NFC

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

7 years ago[InstCombine] Use APInt::setSignBit and APInt::isNegative(). NFC
Craig Topper [Fri, 14 Apr 2017 05:09:04 +0000 (05:09 +0000)]
[InstCombine] Use APInt::setSignBit and APInt::isNegative(). NFC

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

7 years agoFix test failure on windows: pass module to getInstrProfXXName calls
Xinliang David Li [Fri, 14 Apr 2017 03:03:24 +0000 (03:03 +0000)]
Fix test failure on windows: pass module to getInstrProfXXName calls

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

7 years agoObject, LTO: Add target triple to irsymtab and LTO API.
Peter Collingbourne [Fri, 14 Apr 2017 02:55:06 +0000 (02:55 +0000)]
Object, LTO: Add target triple to irsymtab and LTO API.

Start using it in LLD to avoid needing to read bitcode again just to get the
target triple, and in llvm-lto2 to avoid printing symbol table information
that is inappropriate for the target.

Differential Revision: https://reviews.llvm.org/D32038

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

7 years agoNewGVN: Don't propagate over phi backedges where undef causes us to
Daniel Berlin [Fri, 14 Apr 2017 02:53:37 +0000 (02:53 +0000)]
NewGVN: Don't propagate over phi backedges where undef causes us to
have >1 value, unless we can prove the phi node is cycle free.

Fixes PR 32607.

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

7 years agoUse range-for; NFC
Sanjoy Das [Fri, 14 Apr 2017 01:33:15 +0000 (01:33 +0000)]
Use range-for; NFC

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

7 years agoUse transform instead of manual loop; NFC
Sanjoy Das [Fri, 14 Apr 2017 01:33:13 +0000 (01:33 +0000)]
Use transform instead of manual loop; NFC

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

7 years agoLLVMCodeGen: Add ProfileData into deps corresponding to r300277.
NAKAMURA Takumi [Fri, 14 Apr 2017 00:36:06 +0000 (00:36 +0000)]
LLVMCodeGen: Add ProfileData into deps corresponding to r300277.

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

7 years ago[AMDGPU] added SIInstrInfo::getAddNoCarry() helper
Stanislav Mekhanoshin [Fri, 14 Apr 2017 00:33:44 +0000 (00:33 +0000)]
[AMDGPU] added SIInstrInfo::getAddNoCarry() helper

Addressed rest of post submit comments from D31993.

Differential Revision: https://reviews.llvm.org/D32057

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

7 years ago[ORC] Re-enable the Error/Expected unit tests that were disabled in r300177.
Lang Hames [Fri, 14 Apr 2017 00:06:12 +0000 (00:06 +0000)]
[ORC] Re-enable the Error/Expected unit tests that were disabled in r300177.

The tests were failing due to an occasional deadlock in SerializationTraits
for Error: Both serializers and deserializers were protected by a single
mutex and in the unit test (where both ends of the RPC are in the same
process) one side might obtain the mutex, then block waiting for input,
leaving the other side of the connection unable to obtain the mutex to
write the data the first side was waiting for. Splitting the mutex into
two (one for serialization, one for deserialization) appears to have fixed the
issue.

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

7 years agoSimplify some Verifier attribute checks with AttributeSet
Reid Kleckner [Fri, 14 Apr 2017 00:06:06 +0000 (00:06 +0000)]
Simplify some Verifier attribute checks with AttributeSet

Now that we have a type that can represent the attributes on a single
return, function, or parameter, we can pass it around directly rather
than passing around AttributeList and Idx. Removes some more one-based
argument attribute index counting.

NFC

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