OSDN Git Service

android-x86/external-llvm.git
8 years agoUse FPasses in opt exactly when it is initialized.
Patrik Hagglund [Wed, 15 Jun 2016 10:32:00 +0000 (10:32 +0000)]
Use FPasses in opt exactly when it is initialized.

Previously, there was a discrepancy between the population of function
passes in FPasses, and their invocation. Function passes specified on
the command line, after an optimizaton level was simply discared. This
fix PR27509.

Patch by Jesper Antonsson.

Differential Review: http://reviews.llvm.org/D20725

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

8 years ago[mips] Removed invalid test from o32_cc.ll
Daniel Sanders [Wed, 15 Jun 2016 09:47:27 +0000 (09:47 +0000)]
[mips] Removed invalid test from o32_cc.ll

MIPS32R1 cannot implement a 64-bit FPU because this was introduced in MIPS32R2.

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

8 years ago[mips] clang-format Mips16ISelDAGToDAG.{cpp,h}
Daniel Sanders [Wed, 15 Jun 2016 09:44:22 +0000 (09:44 +0000)]
[mips] clang-format Mips16ISelDAGToDAG.{cpp,h}

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

8 years agoSpeculative buildbot fix.
Sean Silva [Wed, 15 Jun 2016 09:00:33 +0000 (09:00 +0000)]
Speculative buildbot fix.

This wasn't failing for me with clang as the compiler. I think GCC may
disagree with clang about whether a friend declaration introduces a
declaration in the enclosing namespace (or something).

Example error:

/home/uweigand/sandbox/buildbot/clang-s390x-linux/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:950:77: error: ‘llvm::raw_ostream& llvm::slpvectorizer::operator<<(llvm::raw_ostream&, const llvm::slpvectorizer::BoUpSLP::ScheduleData&)’ should have been declared inside ‘llvm::slpvectorizer’
                                              const BoUpSLP::ScheduleData &SD) {
                                                                             ^

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

8 years ago[PM] Port SLPVectorizer to the new PM
Sean Silva [Wed, 15 Jun 2016 08:43:40 +0000 (08:43 +0000)]
[PM] Port SLPVectorizer to the new PM

This uses the "runImpl" approach to share code with the old PM.

Porting to the new PM meant abandoning the anonymous namespace enclosing
most of SLPVectorizer.cpp which is a bit of a bummer (but not a big deal
compared to having to pull the pass class into a header which the new PM
requires since it calls the constructor directly).

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

8 years ago[mips][msa] Fix register/register-class mismatches in emitINSERT_DF_VIDX().
Daniel Sanders [Wed, 15 Jun 2016 08:43:23 +0000 (08:43 +0000)]
[mips][msa] Fix register/register-class mismatches in emitINSERT_DF_VIDX().

Reviewers: sdardis

Subscribers: dsanders, sdardis, llvm-commits

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

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

8 years ago[mips][microMIPS] Add CodeGen support for AND*, OR16, OR*, XOR*, NOT16 and NOR instru...
Zlatko Buljan [Wed, 15 Jun 2016 07:46:24 +0000 (07:46 +0000)]
[mips][microMIPS] Add CodeGen support for AND*, OR16, OR*, XOR*, NOT16 and NOR instructions
Differential Revision: http://reviews.llvm.org/D16719

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

8 years ago[AVX512] Fix BLENDM lowering patterns. Operands should be swapped to match SELECT...
Igor Breger [Wed, 15 Jun 2016 07:30:38 +0000 (07:30 +0000)]
[AVX512] Fix BLENDM lowering patterns. Operands should be swapped to match SELECT behavior.
Use BLENDM instead of masked move instruction.

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

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

8 years agoPush a dependent computation into the assert that uses it; NFC
Sanjoy Das [Wed, 15 Jun 2016 07:27:04 +0000 (07:27 +0000)]
Push a dependent computation into the assert that uses it; NFC

... instead of explicitly conditioning on NDEBUG.  Also use an easier to
read conditional expression.

(Addresses post-commit review from David Blaikie.)

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

8 years agoAMDGPU: Fix MUBUF offset bugs affecting llvm.amdgcn.buffer.* intrinsics
Nicolai Haehnle [Wed, 15 Jun 2016 07:13:05 +0000 (07:13 +0000)]
AMDGPU: Fix MUBUF offset bugs affecting llvm.amdgcn.buffer.* intrinsics

Summary:
This fixes two related bugs. First, the generic optimization passes
unfortunately generate negative constant offsets but the hardware treats
SOffset as an unsigned value.

Second, there is a hardware bug on SI and CI, where address clamping in MUBUF
instructions does not work correctly when SOffset is larger than the buffer
size. This patch works around this bug by never using SOffset.

An alternative workaround would be to do the clamping manually when SOffset
is too large, but generating the required code sequence during instruction
selection would be rather involved, and in any case the resulting code would
probably be worse.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96360

Reviewers: arsenm, tstellarAMD

Subscribers: arsenm, llvm-commits, kzhuravl

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

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

8 years agoFix unused variable warning; NFC
Sanjoy Das [Wed, 15 Jun 2016 06:53:59 +0000 (06:53 +0000)]
Fix unused variable warning; NFC

TailCallReturnAddrDelta is used only in an assert, so put it under
defined(NDEBUG).

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

8 years ago[SCEV] Use dyn_cast<T> instead of dyn_cast<const T>; NFC
Sanjoy Das [Wed, 15 Jun 2016 06:53:55 +0000 (06:53 +0000)]
[SCEV] Use dyn_cast<T> instead of dyn_cast<const T>; NFC

The const is unnecessary.

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

8 years ago[SCEV] Use cast<> instead of dyn_cast; NFC
Sanjoy Das [Wed, 15 Jun 2016 06:53:51 +0000 (06:53 +0000)]
[SCEV] Use cast<> instead of dyn_cast; NFC

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

8 years ago[PM] Port AlignmentFromAssumptions to the new PM.
Sean Silva [Wed, 15 Jun 2016 06:18:01 +0000 (06:18 +0000)]
[PM] Port AlignmentFromAssumptions to the new PM.

This uses the "runImpl" pattern to share code between the old and new PM.

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

8 years agoDon't force SP-relative addressing for statepoints
Sanjoy Das [Wed, 15 Jun 2016 05:35:14 +0000 (05:35 +0000)]
Don't force SP-relative addressing for statepoints

Summary:
...  when the offset is not statically known.

Prioritize addresses relative to the stack pointer in the stackmap, but
fallback gracefully to other modes of addressing if the offset to the
stack pointer is not a known constant.

Patch by Oscar Blumberg!

Reviewers: sanjoy

Subscribers: llvm-commits, majnemer, rnk, sanjoy, thanm

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

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

8 years agoAdd support for callsite in the new C API for attributes
Amaury Sechet [Wed, 15 Jun 2016 05:14:29 +0000 (05:14 +0000)]
Add support for callsite in the new C API for attributes

Summary: The second consumer of attributes.

Reviewers: Wallbraker, whitequark, echristo, rafael, jyknight

Subscribers: mehdi_amini

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

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

8 years ago[SCEV] clang-format some sections
Sanjoy Das [Wed, 15 Jun 2016 04:37:50 +0000 (04:37 +0000)]
[SCEV] clang-format some sections

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

8 years ago[SCEV] Change the interface for SolveQuadraticEquation; NFC
Sanjoy Das [Wed, 15 Jun 2016 04:37:47 +0000 (04:37 +0000)]
[SCEV] Change the interface for SolveQuadraticEquation; NFC

Use Optional<T> to denote the absence of a solution, not
SCEVCouldNotCompute.  This makes the usage of SolveQuadraticEquation
somewhat simpler.

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

8 years agoAMDGPU/SI: Correctly encode constant expressions
Tom Stellard [Wed, 15 Jun 2016 03:09:39 +0000 (03:09 +0000)]
AMDGPU/SI: Correctly encode constant expressions

Summary:
We we have an MCConstantExpr, we can encode it directly into the instruction
instead of emitting fixups.

Reviewers: artem.tamazov, vpykhtin, SamWot, nhaustov, arsenm

Subscribers: arsenm, llvm-commits, kzhuravl

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

Change-Id: I88b3edf288d48e65c5d705fc4850d281f8e36948

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

8 years ago[MBP] add comments and bug fix
Xinliang David Li [Wed, 15 Jun 2016 03:03:30 +0000 (03:03 +0000)]
[MBP] add comments and bug fix

Document the new parameter and threshod computation
model.  Also fix a bug when the threshold parameter
is set to be different from the default.

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

8 years agoAMDGPU/AsmParser: Add support for parsing symbol operands
Tom Stellard [Wed, 15 Jun 2016 02:54:14 +0000 (02:54 +0000)]
AMDGPU/AsmParser: Add support for parsing symbol operands

Summary:
We can now reference symbols directly in operands, like this:
s_mov_b32 s0, global

Reviewers: artem.tamazov, vpykhtin, SamWot, nhaustov

Subscribers: arsenm, llvm-commits, kzhuravl

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

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

8 years ago[LibFuzzer] Fix ``FuzzerMutate.ShuffleBytes2`` unit test on OSX.
Dan Liew [Wed, 15 Jun 2016 01:40:02 +0000 (01:40 +0000)]
[LibFuzzer] Fix ``FuzzerMutate.ShuffleBytes2`` unit test on OSX.

The ``FuzzerMutate.ShuffleBytes2`` unit test was failing on
OSX due to the implementation of ``std::random_shuffle()``
being different between libcxx and libstdc++.

@kcc has decided (see http://reviews.llvm.org/D21218) it is acceptable
for there to be different mutation behavior on different platforms so
this commit just adjusts the test to perform the minimum number of
iterations (that is a power of 2) to see all the mutations the unit test
is looking for.

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

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

8 years agoRecommit [LV] Enable vectorization of loops where the IV has an external use
Michael Kuperstein [Wed, 15 Jun 2016 00:35:26 +0000 (00:35 +0000)]
Recommit [LV] Enable vectorization of loops where the IV has an external use

r272715 broke libcxx because it did not correctly handle cases where the
last iteration of one IV is the second-to-last iteration of another.

Original commit message:
Vectorizing loops with "escaping" IVs has been disabled since r190790, due to
PR17179. This re-enables it, with support for external use of both
"post-increment" (last iteration) and "pre-increment" (second-to-last iteration)
IVs.

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

8 years agoMake DetectDeadLanes preserve CFG
Matt Arsenault [Wed, 15 Jun 2016 00:25:09 +0000 (00:25 +0000)]
Make DetectDeadLanes preserve CFG

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

8 years ago[LoopUnroll] Don't crash trying to unroll loop with EH pad exit
David Majnemer [Wed, 15 Jun 2016 00:19:56 +0000 (00:19 +0000)]
[LoopUnroll] Don't crash trying to unroll loop with EH pad exit

We do not support splitting cleanuppad or catchswitches.  This is
problematic for passes which assume that a loop is in loop simplify
form (the loop would have a dedicated exit block instead of sharing it).

While it isn't great that we don't support this for cleanups, we still
cannot make loop-simplify form an assertable precondition because
indirectbr will also disable these sorts of CFG cleanups.

This fixes PR28132.

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

8 years ago[CodeView] Don't emit debuginfo for imported symbols
David Majnemer [Wed, 15 Jun 2016 00:19:52 +0000 (00:19 +0000)]
[CodeView] Don't emit debuginfo for imported symbols

Emitting symbol information requires us to have a definition for the
symbol.  A symbol reference is insufficient.

This fixes PR28123.

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

8 years agoRemove the ScalarReplAggregates pass
David Majnemer [Wed, 15 Jun 2016 00:19:09 +0000 (00:19 +0000)]
Remove the ScalarReplAggregates pass

Nearly all the changes to this pass have been done while maintaining and
updating other parts of LLVM.  LLVM has had another pass, SROA, which
has superseded ScalarReplAggregates for quite some time.

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

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

8 years agoAMDGPU: Run pointer optimization passes
Matt Arsenault [Wed, 15 Jun 2016 00:11:01 +0000 (00:11 +0000)]
AMDGPU: Run pointer optimization passes

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

8 years agoVerifier: check that functions have at most a single !prof attachment.
Peter Collingbourne [Tue, 14 Jun 2016 23:13:15 +0000 (23:13 +0000)]
Verifier: check that functions have at most a single !prof attachment.

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

8 years agoFix a test case to match its intention
Xinliang David Li [Tue, 14 Jun 2016 23:05:46 +0000 (23:05 +0000)]
Fix a test case to match its intention

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

8 years agoRemove unused import. NFC
Amaury Sechet [Tue, 14 Jun 2016 22:30:50 +0000 (22:30 +0000)]
Remove unused import. NFC

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

8 years agoReverting r272715 since it broke libcxx.
Michael Kuperstein [Tue, 14 Jun 2016 22:30:41 +0000 (22:30 +0000)]
Reverting r272715 since it broke libcxx.

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

8 years agoSet machine block placement hot prob threshold for both static and runtime profile.
Dehao Chen [Tue, 14 Jun 2016 22:27:17 +0000 (22:27 +0000)]
Set machine block placement hot prob threshold for both static and runtime profile.

Summary: With runtime profile, we have more confidence in branch probability, thus during basic block layout, we set a lower hot prob threshold so that blocks can be layouted optimally.

Reviewers: djasper, davidxl

Subscribers: llvm-commits

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

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

8 years ago[pdbdump] Verify TPI hash for LF_ENUM type records.
Rui Ueyama [Tue, 14 Jun 2016 22:25:07 +0000 (22:25 +0000)]
[pdbdump] Verify TPI hash for LF_ENUM type records.

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

8 years agoFix list of deprecated C API attribute functions
Amaury Sechet [Tue, 14 Jun 2016 22:23:29 +0000 (22:23 +0000)]
Fix list of deprecated C API attribute functions

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

8 years agoRevert "Enable libFuzzer's afl_driver to append stderr to a file."
Vitaly Buka [Tue, 14 Jun 2016 22:09:00 +0000 (22:09 +0000)]
Revert "Enable libFuzzer's afl_driver to append stderr to a file."

Crashes with AddressSanitizer: SEGV on unknown address
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fuzzer/builds/9924/steps/annotate/logs/stdio

This reverts commit r272706.

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

8 years agoRename AttributeSetImpl::NumAttrs and AttributeSetImpl::getNumAttributes to reflect...
Amaury Sechet [Tue, 14 Jun 2016 22:04:16 +0000 (22:04 +0000)]
Rename AttributeSetImpl::NumAttrs and AttributeSetImpl::getNumAttributes to reflect that they work on slots rather than attributes. NFC

Summary: The current naming not only doesn't convey the meaning of what this does, but worse, it convey the wrong meaning. This was a major source of confusion understanding the code, so I'm applying the boy scout rule here and making it better after I leave.

Reviewers: void, bkramer, whitequark

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

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

8 years ago[PM] Port WholeProgramDevirt to the new pass manager.
Davide Italiano [Tue, 14 Jun 2016 21:44:19 +0000 (21:44 +0000)]
[PM] Port WholeProgramDevirt to the new pass manager.

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

8 years ago[LV] Enable vectorization of loops where the IV has an external use
Michael Kuperstein [Tue, 14 Jun 2016 21:27:27 +0000 (21:27 +0000)]
[LV] Enable vectorization of loops where the IV has an external use

Vectorizing loops with "escaping" IVs has been disabled since r190790, due to
PR17179. This re-enables it, with support for external use of both
"post-increment" (last iteration) and "pre-increment" (second-to-last iteration)
IVs.

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

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

8 years ago[x86] add current codegen tests for PR27924
Sanjay Patel [Tue, 14 Jun 2016 21:25:46 +0000 (21:25 +0000)]
[x86] add current codegen tests for PR27924

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

8 years agoAdd a missing test.
Evgeniy Stepanov [Tue, 14 Jun 2016 21:24:13 +0000 (21:24 +0000)]
Add a missing test.

This is a test for r272421: Disable MSan-hostile loop unswitching.

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

8 years ago[MemorySSA] Set CFGOnly correctly for MemorySSAWrapperPass
Geoff Berry [Tue, 14 Jun 2016 21:19:40 +0000 (21:19 +0000)]
[MemorySSA] Set CFGOnly correctly for MemorySSAWrapperPass

Subscribers: mcrosier, llvm-commits

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

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

8 years agoIR: Introduce local_unnamed_addr attribute.
Peter Collingbourne [Tue, 14 Jun 2016 21:01:22 +0000 (21:01 +0000)]
IR: Introduce local_unnamed_addr attribute.

If a local_unnamed_addr attribute is attached to a global, the address
is known to be insignificant within the module. It is distinct from the
existing unnamed_addr attribute in that it only describes a local property
of the module rather than a global property of the symbol.

This attribute is intended to be used by the code generator and LTO to allow
the linker to decide whether the global needs to be in the symbol table. It is
possible to exclude a global from the symbol table if three things are true:
- This attribute is present on every instance of the global (which means that
  the normal rule that the global must have a unique address can be broken without
  being observable by the program by performing comparisons against the global's
  address)
- The global has linkonce_odr linkage (which means that each linkage unit must have
  its own copy of the global if it requires one, and the copy in each linkage unit
  must be the same)
- It is a constant or a function (which means that the program cannot observe that
  the unique-address rule has been broken by writing to the global)

Although this attribute could in principle be computed from the module
contents, LTO clients (i.e. linkers) will normally need to be able to compute
this property as part of symbol resolution, and it would be inefficient to
materialize every module just to compute it.

See:
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160509/356401.html
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160516/356738.html
for earlier discussion.

Part of the fix for PR27553.

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

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

8 years agoResubmit "[pdb] Actually write a PDB to disk from YAML.""
Zachary Turner [Tue, 14 Jun 2016 20:48:36 +0000 (20:48 +0000)]
Resubmit "[pdb] Actually write a PDB to disk from YAML.""

Reviewed By: ruiu
Differential Revision: http://reviews.llvm.org/D21220

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

8 years agoEnable libFuzzer's afl_driver to append stderr to a file.
Vitaly Buka [Tue, 14 Jun 2016 20:42:05 +0000 (20:42 +0000)]
Enable libFuzzer's afl_driver to append stderr to a file.

Summary:
[libFuzzer] Enable afl_driver to append stderr to a user specified file.

Append stderr of afl_driver to the file specified by the environmental variable
AFL_DRIVER_STDERR_DUPLICATE_FILENAME if it is set. This lets users see outputs
on crashes without rerunning crashing test cases (which won't work for crashes
that are difficult to reproduce). Before this patch, stderr would only be sent to afl-fuzz
and users would have no way of seeing it.

Reviewers: llvm-commits, aizatsky, kcc, vitalybuka

Subscribers: vitalybuka

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

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

8 years agoAMDGPU/SI: Refactor fixup handling for constant addrspace variables
Tom Stellard [Tue, 14 Jun 2016 20:29:59 +0000 (20:29 +0000)]
AMDGPU/SI: Refactor fixup handling for constant addrspace variables

Summary:
We now use a standard fixup type applying the pc-relative address of
constant address space variables, and we have the GlobalAddress lowering
code add the required 4 byte offset to the global address rather than
doing it as part of the fixup.

This refactoring will make it easier to use the same code for global
address space variables and also simplifies the code.

Re-commit this after fixing a bug where we were trying to use a
reference to a Triple object that had already been destroyed.

Reviewers: arsenm, kzhuravl

Subscribers: arsenm, kzhuravl, llvm-commits

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

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

8 years agoMake sure attribute kind and attributes are named respectively Kind and Attr consiste...
Amaury Sechet [Tue, 14 Jun 2016 20:27:35 +0000 (20:27 +0000)]
Make sure attribute kind and attributes are named respectively Kind and Attr consistently. Historically they used to be the same the terminology is very confused in the codebase. NFC.

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

8 years ago[ValueTracking] Calls to @llvm.assume always return
Sanjoy Das [Tue, 14 Jun 2016 20:23:16 +0000 (20:23 +0000)]
[ValueTracking] Calls to @llvm.assume always return

This change teaches llvm::isGuaranteedToTransferExecutionToSuccessor
that calls to @llvm.assume always terminate.  Most other relevant
intrinsics should be covered by the "CS.onlyReadsMemory() ||
CS.onlyAccessesArgMemory()" bit but we were missing @llvm.assumes
because we state that it clobbers memory.

Added an LICM test case, but this change is not specific to LICM.

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

8 years ago[TailDuplication] Split up NumInstrDups statistic.
Geoff Berry [Tue, 14 Jun 2016 19:40:10 +0000 (19:40 +0000)]
[TailDuplication] Split up NumInstrDups statistic.

Summary:
Split NumInstrDups statistic into separate added/removed counts to avoid
negative stat being printed as unsigned.

Subscribers: mcrosier, llvm-commits

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

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

8 years ago[LibFuzzer] Disable the ``fuzzer-trace-pc.test`` test on non-linux platforms.
Dan Liew [Tue, 14 Jun 2016 19:15:13 +0000 (19:15 +0000)]
[LibFuzzer] Disable the ``fuzzer-trace-pc.test`` test on non-linux platforms.

On OSX this test sometimes fails due to the
``LLVMFuzzer-FullCoverageSetTest-TracePC`` program going over the
default 2GiB memory limit. This shouldn't be happening and needs
investigating. For now just disable the test so we can set up an
OSX buildbot.

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

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

8 years ago[X86] Reduce the width of multiplification when its operands are extended from i8...
Wei Mi [Tue, 14 Jun 2016 18:53:20 +0000 (18:53 +0000)]
[X86] Reduce the width of multiplification when its operands are extended from i8 or i16

For <N x i32> type mul, pmuludq will be used for targets without SSE41, which
often introduces many extra pack and unpack instructions in vectorized loop
body because pmuludq generates <N/2 x i64> type value. However when the operands
of <N x i32> mul are extended from smaller size values like i8 and i16, the type
of mul may be shrunk to use pmullw + pmulhw/pmulhuw instead of pmuludq, which
generates better code. For targets with SSE41, pmulld is supported so no
shrinking is needed.

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

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

8 years agoRevert "[pdb] Actually write a PDB to disk from YAML."
Zachary Turner [Tue, 14 Jun 2016 18:51:35 +0000 (18:51 +0000)]
Revert "[pdb] Actually write a PDB to disk from YAML."

This reverts commit 879139e1c6577b09df52de56a6bab856a19ed185.

This was committed accidentally when I blindly typed git svn
dcommit instead of the command to generate a patch.

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

8 years ago[pdb] Actually write a PDB to disk from YAML.
Zachary Turner [Tue, 14 Jun 2016 18:49:36 +0000 (18:49 +0000)]
[pdb] Actually write a PDB to disk from YAML.

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

8 years ago[CFLAA] Tag arguments as escaped instead of unknown.
George Burgess IV [Tue, 14 Jun 2016 18:12:28 +0000 (18:12 +0000)]
[CFLAA] Tag arguments as escaped instead of unknown.

This patch also includes some refactoring.

Prior to this patch, we tagged all CFLAA attributes as unknown. This is
suboptimal, since it meant that any Value used as an argument would be
considered to alias any other Value that existed.

Now that we have the machinery to tag sets below the set for an
arbitrary value with attributes, it's okay to be less conservative with
arguments. (Specifically, we still tag the set under an argument with
unknown).

Patch by Jia Chen.

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

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

8 years ago[CFLAA] Refactor graph-building code. NFC.
George Burgess IV [Tue, 14 Jun 2016 18:02:27 +0000 (18:02 +0000)]
[CFLAA] Refactor graph-building code. NFC.

This patch refactors CFLAA's graph building code. This makes keeping
track of common state (TargetLibraryInfo, ...) easier.

Patch by Jia Chen.

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

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

8 years ago[docs] Update AMDGPU relocation information
Konstantin Zhuravlyov [Tue, 14 Jun 2016 17:20:29 +0000 (17:20 +0000)]
[docs] Update AMDGPU relocation information
  - Added new notation for specifying relocation calculation
  - Renamed:
    - R_AMDGPU_32_LOW -> R_AMDGPU_ABS32_LO
    - R_AMDGPU_32_HIGH -> R_AMDGPU_ABS32_HI
    - R_AMDGPU_64 -> R_AMDGPU_ABS64
  - Added:
    - R_AMDGPU_REL32
    - R_AMDGPU_REL64
    - R_AMDGPU_ABS32
  - Updated calculations for relative relocations

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

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

8 years ago[FileCheck] Document --check-prefixes.
Daniel Sanders [Tue, 14 Jun 2016 16:42:05 +0000 (16:42 +0000)]
[FileCheck] Document --check-prefixes.

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

8 years agoFix some typos in the Kaleidoscope tutorial (PR28120)
Hans Wennborg [Tue, 14 Jun 2016 16:05:12 +0000 (16:05 +0000)]
Fix some typos in the Kaleidoscope tutorial (PR28120)

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

8 years agoRevert "AMDGPU/SI: Refactor fixup handling for constant addrspace variables"
Tom Stellard [Tue, 14 Jun 2016 15:16:35 +0000 (15:16 +0000)]
Revert "AMDGPU/SI: Refactor fixup handling for constant addrspace variables"

This reverts commit r272675.

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

8 years agoAMDGPU/SI: Refactor fixup handling for constant addrspace variables
Tom Stellard [Tue, 14 Jun 2016 15:11:01 +0000 (15:11 +0000)]
AMDGPU/SI: Refactor fixup handling for constant addrspace variables

Summary:
We now use a standard fixup type applying the pc-relative address of
constant address space variables, and we have the GlobalAddress lowering
code add the required 4 byte offset to the global address rather than
doing it as part of the fixup.

This refactoring will make it easier to use the same code for global
address space variables and also simplifies the code.

Reviewers: arsenm, kzhuravl

Subscribers: arsenm, kzhuravl, llvm-commits

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

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

8 years agoFix BSS global handling in AsmPrinter
Nirav Dave [Tue, 14 Jun 2016 15:09:30 +0000 (15:09 +0000)]
Fix BSS global handling in AsmPrinter

Change EmitGlobalVariable to check final assembler section is in BSS
before using .lcomm/.comm directive. This prevents globals from being
put into .bss erroneously when -data-sections is used.

This fixes PR26570.

Reviewers: echristo, rafael

Subscribers: llvm-commits, mehdi_amini

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

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

8 years ago[AMDGPU][llvm-mc] Predefined symbols to access -mcpu from the assembly source (.optio...
Artem Tamazov [Tue, 14 Jun 2016 15:03:59 +0000 (15:03 +0000)]
[AMDGPU][llvm-mc] Predefined symbols to access -mcpu from the assembly source (.option.machine_version...)

The feature allows for conditional assembly etc.
TODO: make those symbols read-only.
Test added.

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

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

8 years agoLoopRotate: restructure code to simplify functions
Sebastian Pop [Tue, 14 Jun 2016 14:44:05 +0000 (14:44 +0000)]
LoopRotate: restructure code to simplify functions

We move the loop rotate functions in a separate class to avoid passing multiple
parameters to each function.  This cleanup will help with further development of
loop rotation.  NFC.

Patch written by Aditya Kumar and Sebastian Pop.

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

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

8 years ago[FileCheck] Add --check-prefixes as a shorthand for multiple --check-prefix options.
Daniel Sanders [Tue, 14 Jun 2016 14:28:04 +0000 (14:28 +0000)]
[FileCheck] Add --check-prefixes as a shorthand for multiple --check-prefix options.

Summary:
This new alias takes a comma separated list of prefixes which allows
'--check-prefix=A --check-prefix=B --check-prefix=C' to be written as
'--check-prefixes=A,B,C'.

Reviewers: probinson

Subscribers: probinson, llvm-commits, dsanders

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

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

8 years ago[mips] Optimize stack pointer adjustments.
Simon Dardis [Tue, 14 Jun 2016 13:39:43 +0000 (13:39 +0000)]
[mips] Optimize stack pointer adjustments.

Instead of always using addu to adjust the stack pointer when the
size out is of the range of an addiu instruction, use subu so that
a smaller constant can be generated.

This can give savings of ~3 instructions whenever a function has a
a stack frame whose size is out of range of an addiu instruction.

This change may break some naive stack unwinders.

Partially resolves PR/26291.

Thanks to David Chisnall for reporting the issue.

Reviewers: dsanders, vkalintiris

Differential Review: http://reviews.llvm.org/D21321

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

8 years ago[Thumb] Fix off-by-one error in r272007
James Molloy [Tue, 14 Jun 2016 13:33:07 +0000 (13:33 +0000)]
[Thumb] Fix off-by-one error in r272007

We can only generate immediates up to #510 with a MOV+ADD, not #511, because there's no such instruction as add #256.

Found by Oliver Stannard and csmith!

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

8 years agoAMDGPU: mark {exp,log}10{,f,l} library functions as unavailable
Nicolai Haehnle [Tue, 14 Jun 2016 13:14:53 +0000 (13:14 +0000)]
AMDGPU: mark {exp,log}10{,f,l} library functions as unavailable

Summary:
The SimplifyLibCalls part of InstCombine generates calls to those otherwise.

I wonder if at some point we shouldn't just call disableAllFunctions() and
then enable functions on a whitelist basis...

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96495

Reviewers: arsenm, tstellarAMD

Subscribers: llvm-commits, kzhuravl

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

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

8 years ago[MergedLoadStoreMotion] Before quering AA verify the loads are the same.
Chad Rosier [Tue, 14 Jun 2016 12:47:18 +0000 (12:47 +0000)]
[MergedLoadStoreMotion] Before quering AA verify the loads are the same.

Basicaa stats show the number of queries in Spec2k6 are reduced by 4540
or ~.67% overall.

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

8 years agoAdd a Musl environment to the triple.
Rafael Espindola [Tue, 14 Jun 2016 12:45:33 +0000 (12:45 +0000)]
Add a Musl environment to the triple.

It will be used in clang.

Patch by Lei Zhang.

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

8 years ago[mips][atomics] Fix atomic instruction descriptions and uses.
Simon Dardis [Tue, 14 Jun 2016 11:29:28 +0000 (11:29 +0000)]
[mips][atomics] Fix atomic instruction descriptions and uses.

PR27458 highlights that the MIPS backend does not have well formed
MIR for atomic operations (among other errors).

This patch adds expands and corrects the LL/SC descriptions and uses
for MIPS(64).

Reviewers: dsanders, vkalintiris

Differential Review: http://reviews.llvm.org/D19719

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

8 years ago[mips][ias] Implement one N32 case (of two) for .cpsetup.
Daniel Sanders [Tue, 14 Jun 2016 10:13:47 +0000 (10:13 +0000)]
[mips][ias] Implement one N32 case (of two) for .cpsetup.

This patch implements the N32 case where -mno-shared is in effect. The case
where -mshared is in effect will be added later since doing that now requires
additional changes to how we handle %hi(%neg(%gp_rel(foo))) expressions to
emit the three relocations as three relocations (currently only one of the
three would be emitted) which then requires further changes to our MCFixup
handling.

While we could fix both cases together, fixing the -mno-shared case allows us
to fix the ELFCLASS bug (where N32 incorrectly uses ELFCLASS64 instead of
ELFCLASS32) in a way that allows cpsetup.s to check for a correct output instead
of another incorrect output.

Reviewers: sdardis

Subscribers: dsanders, llvm-commits, sdardis

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

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

8 years ago[X86][SSE4A] Added patterns for nontemporal stores of scalar float/doubles using...
Simon Pilgrim [Tue, 14 Jun 2016 09:43:38 +0000 (09:43 +0000)]
[X86][SSE4A] Added patterns for nontemporal stores of scalar float/doubles using MOVNTSD/MOVNTSS

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

8 years ago[LoopVer] Remove an assert that's redundant now. NFC
Adam Nemet [Tue, 14 Jun 2016 09:39:01 +0000 (09:39 +0000)]
[LoopVer] Remove an assert that's redundant now. NFC

Ensuring that the PHI are all single-operand is not performed in the
second pass added by the previous pass.  This removes the assert from
the first pass.

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

8 years ago[LoopVer] Update all existing PHIs in the exit block
Adam Nemet [Tue, 14 Jun 2016 09:38:54 +0000 (09:38 +0000)]
[LoopVer] Update all existing PHIs in the exit block

We only used to add the edge from the cloned loop to PHIs that
corresponded to values defined by the loop.  We need to do this for all
PHIs obviously since we need a PHI operand for each incoming edge.

This includes things like PHIs with a constant value or with values
defined before the original loop (see the testcases).

After the patch the PHIs are added to the exit block in two passes.

In the first pass we ensure there is a single-operand (LCSSA) PHI for
each value defined by the loop.

In the second pass we loop through each (single-operand) PHI and add the
value for the edge from the cloned loop.  If the value is defined in the
loop we'll use the cloned instruction from the cloned loop.

Fixes PR28037

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

8 years ago[mips] MIPS32/64 itineraries
Simon Dardis [Tue, 14 Jun 2016 09:35:29 +0000 (09:35 +0000)]
[mips] MIPS32/64 itineraries

Itineraries for some pre MIPSR6 and EVA instructions. Some pseudo expanded
instructions are marked as having no scheduling info.

Reviewers: dsanders, vkalintiris

Differential Review: http://reviews.llvm.org/D20418

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

8 years ago[mips][dsp] Fix use without def on DSPCtrl registers read by rddsp intrinsic.
Daniel Sanders [Tue, 14 Jun 2016 09:29:46 +0000 (09:29 +0000)]
[mips][dsp] Fix use without def on DSPCtrl registers read by rddsp intrinsic.

Reviewers: sdardis

Subscribers: dsanders, sdardis, llvm-commits

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

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

8 years ago[mips][msa] copyPhysReg() should not set RegState::Define on result of CTCMSA.
Daniel Sanders [Tue, 14 Jun 2016 09:11:33 +0000 (09:11 +0000)]
[mips][msa] copyPhysReg() should not set RegState::Define on result of CTCMSA.

Summary:
The machine verifier reports 'Explicit operand marked as def' when it is
manually specified even though it agrees with the operand info.

Reviewers: sdardis

Subscribers: dsanders, sdardis, llvm-commits

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

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

8 years ago[SelectionDAG] Remove exit-on-error flag from test (PR27765)
Diana Picus [Tue, 14 Jun 2016 07:30:20 +0000 (07:30 +0000)]
[SelectionDAG] Remove exit-on-error flag from test (PR27765)

The exit-on-error flag in the ARM test is necessary in order to avoid an
unreachable in the DAGTypeLegalizer, when trying to expand a physical register.
We can also avoid this situation by introducing a bitcast early on, where the
invalid scalar-to-vector conversion is detected.

We also add a test for PowerPC, which goes through a similar code path in the
SelectionDAGBuilder.

Fixes PR27765.

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

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

8 years agore-generate the tests using the update_llc_test_checks.py script
Igor Breger [Tue, 14 Jun 2016 07:05:10 +0000 (07:05 +0000)]
re-generate the tests using the update_llc_test_checks.py script

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

8 years ago[PM] Port Mem2Reg to the new pass manager.
Davide Italiano [Tue, 14 Jun 2016 03:22:22 +0000 (03:22 +0000)]
[PM] Port Mem2Reg to the new pass manager.

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

8 years ago[AVX512] Use AND32ri8 instead of AND32ri when anding with 1 to create single bit...
Craig Topper [Tue, 14 Jun 2016 03:13:03 +0000 (03:13 +0000)]
[AVX512] Use AND32ri8 instead of AND32ri when anding with 1 to create single bit masks. This results in a smaller encoding.

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

8 years ago[AVX512] Use MOVZX32 instead of MOVZ16 for loading single v8/v4/v2/v1 masks when...
Craig Topper [Tue, 14 Jun 2016 03:13:00 +0000 (03:13 +0000)]
[AVX512] Use MOVZX32 instead of MOVZ16 for loading single v8/v4/v2/v1 masks when KMOVB is not available. This has better behavior with respect to partial register stalls since it won't need to preserve the upper 16-bits of the GPR.

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

8 years ago[AVX512] Add patterns for zero-extending a mask that use the def of KMOVW/KMOVB witho...
Craig Topper [Tue, 14 Jun 2016 03:12:54 +0000 (03:12 +0000)]
[AVX512] Add patterns for zero-extending a mask that use the def of KMOVW/KMOVB without going through an EXTRACT_SUBREG and a MOVZX.

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

8 years ago[AVX512] Add tests for zero extending masks that show an unnecessary movzx instructio...
Craig Topper [Tue, 14 Jun 2016 03:12:48 +0000 (03:12 +0000)]
[AVX512] Add tests for zero extending masks that show an unnecessary movzx instruction. A followup patch will remove that instruction, but adding the tests first to make the more obvious.

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

8 years agoFix for (benign) uninitialized read caught by UBSan bot.
Sean Silva [Tue, 14 Jun 2016 02:45:01 +0000 (02:45 +0000)]
Fix for (benign) uninitialized read caught by UBSan bot.

What happened here is that in the new PM there is a bunch of new copying
(actually, moving) and so this reads the HasProfileData member in
situations where it used to not be read.
It used to only be read strictly in the "runOnFunction" method and its
callees, where is *is* initialized (even after my patch).
So this ends up being benign as far as functional behavior of the
compiler (since we set HasProfileData in the "runImpl" method before we
ever make decisions based on it).

It's awesome that UBSan caught this. It highlights one more thing to
watch out for when porting passes.

Sanitizer bot log was:

-- Testing: 17049 tests, 32 threads --
Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80..
FAIL: LLVM :: Transforms/JumpThreading/thread-loads.ll (15184 of 17049)
******************** TEST 'LLVM :: Transforms/JumpThreading/thread-loads.ll' FAILED ********************
Script:
--
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_ubsan/./bin/opt < /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/JumpThreading/thread-loads.ll -jump-threading -S | /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_ubsan/./bin/FileCheck /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/JumpThreading/thread-loads.ll
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_ubsan/./bin/opt < /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/JumpThreading/thread-loads.ll -passes=jump-threading -S | /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_ubsan/./bin/FileCheck /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/JumpThreading/thread-loads.ll
--
Exit Code: 2

Command Output (stderr):
--
/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/include/llvm/Transforms/Scalar/JumpThreading.h:90:57: runtime error: load of value 136, which is not a valid value for type 'bool'
    #0 0x2c33ba1 in llvm::JumpThreadingPass::JumpThreadingPass(llvm::JumpThreadingPass&&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/include/llvm/Transforms/Scalar/JumpThreading.h:90:57
    #1 0x2bc88e4 in void llvm::PassManager<llvm::Function>::addPass<llvm::JumpThreadingPass>(llvm::JumpThreadingPass) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/include/llvm/IR/PassManager.h:282:40
    #2 0x2bb2682 in llvm::PassBuilder::parseFunctionPassName(llvm::PassManager<llvm::Function>&, llvm::StringRef) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Passes/PassRegistry.def:133:1
    #3 0x2bb4914 in llvm::PassBuilder::parseFunctionPassPipeline(llvm::PassManager<llvm::Function>&, llvm::StringRef&, bool, bool) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Passes/PassBuilder.cpp:489:12
    #4 0x2bb6f81 in llvm::PassBuilder::parsePassPipeline(llvm::PassManager<llvm::Module>&, llvm::StringRef, bool, bool) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Passes/PassBuilder.cpp:674:10
    #5 0x986690 in llvm::runPassPipeline(llvm::StringRef, llvm::LLVMContext&, llvm::Module&, llvm::TargetMachine*, llvm::tool_output_file*, llvm::StringRef, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/opt/NewPMDriver.cpp:85:8
    #6 0x9af25e in main /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/opt/opt.cpp:468:12
    #7 0x7fd7e27dbf44 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21f44)
    #8 0x960157 in _start (/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_ubsan/bin/opt+0x960157)

FileCheck error: '-' is empty.
FileCheck command line:  /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_ubsan/./bin/FileCheck /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/JumpThreading/thread-loads.ll

--

********************
Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
Testing Time: 128.90s
********************
Failing Tests (1):
    LLVM :: Transforms/JumpThreading/thread-loads.ll

  Expected Passes    : 16725
  Expected Failures  : 129
  Unsupported Tests  : 194
  Unexpected Failures: 1

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

8 years ago[PM] Port MemCpyOpt to the new PM.
Sean Silva [Tue, 14 Jun 2016 02:44:55 +0000 (02:44 +0000)]
[PM] Port MemCpyOpt to the new PM.

The need for all these Lookup* functions is just because of calls to
getAnalysis inside methods (i.e. not at the top level) of the
runOnFunction method. They should be straightforward to clean up when
the old PM is gone.

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

8 years agoAdd missing include from r272607 to fix modules build, and remove out-dated workaroun...
Richard Smith [Tue, 14 Jun 2016 01:31:23 +0000 (01:31 +0000)]
Add missing include from r272607 to fix modules build, and remove out-dated workaround from module map.

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

8 years ago[PM/MergedLoadStoreMotion] Preserve analyses more aggressively.
Davide Italiano [Tue, 14 Jun 2016 01:23:31 +0000 (01:23 +0000)]
[PM/MergedLoadStoreMotion] Preserve analyses more aggressively.

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

8 years agoPlacate bots fixing a typo in AA-pipeline description. Sorry.
Davide Italiano [Tue, 14 Jun 2016 01:11:12 +0000 (01:11 +0000)]
Placate bots fixing a typo in AA-pipeline description. Sorry.

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

8 years agoBring back "[PM] Port JumpThreading to the new PM" with a fix
Sean Silva [Tue, 14 Jun 2016 00:51:09 +0000 (00:51 +0000)]
Bring back "[PM] Port JumpThreading to the new PM" with a fix

This reverts commit r272603 and adds a fix.

Big thanks to Davide for pointing me at r216244 which gives some insight
into how to fix this VS2013 issue. VS2013 can't synthesize a move
constructor. So the fix here is to add one explicitly to the
JumpThreadingPass class.

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

8 years ago[PM] Port MergedLoadStoreMotion to the new pass manager.
Davide Italiano [Tue, 14 Jun 2016 00:49:23 +0000 (00:49 +0000)]
[PM] Port MergedLoadStoreMotion to the new pass manager.

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

8 years agoRevert "[PM] Port JumpThreading to the new PM"
Sean Silva [Tue, 14 Jun 2016 00:26:31 +0000 (00:26 +0000)]
Revert "[PM] Port JumpThreading to the new PM"

This reverts commit r272597.

Will investigate issue with VS2013 compilation and then recommit.

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

8 years agoRevert "Try to appease MSVC on clang-x86-win2008-selfhost"
Sean Silva [Tue, 14 Jun 2016 00:19:37 +0000 (00:19 +0000)]
Revert "Try to appease MSVC on clang-x86-win2008-selfhost"

This reverts commit r272601. The attempt didn't work.

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

8 years agoTry to appease MSVC on clang-x86-win2008-selfhost
Sean Silva [Tue, 14 Jun 2016 00:11:37 +0000 (00:11 +0000)]
Try to appease MSVC on clang-x86-win2008-selfhost

I've tested this locally with VS2015 and there are no issues there,
so this might be a VS2013 specific issue.

Thanks to Davide for the suggested fix.

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

8 years ago[LibFuzzer] Move tests in ``fuzzer-traces.test`` that require hooks to their own...
Dan Liew [Tue, 14 Jun 2016 00:11:34 +0000 (00:11 +0000)]
[LibFuzzer] Move tests in ``fuzzer-traces.test`` that require hooks to their own test.

The tests in ``fuzzer-traces-hooks.test`` only work on Linux because calls to hooks
(e.g. ``__sanitizer_weak_hook_memcmp()``) from inside the sanitizer
runtime are only implemented on Linux. Therefore these tests are set to
only run on Linux.

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

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

8 years agoAdd support for collating profiles for use with code coverage
Vedant Kumar [Mon, 13 Jun 2016 23:33:48 +0000 (23:33 +0000)]
Add support for collating profiles for use with code coverage

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

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

8 years ago[PM/MergedLoadStoreMotion] Remove unneeded pass dependency.
Davide Italiano [Mon, 13 Jun 2016 23:28:35 +0000 (23:28 +0000)]
[PM/MergedLoadStoreMotion] Remove unneeded pass dependency.

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

8 years ago[PM] Port JumpThreading to the new PM
Sean Silva [Mon, 13 Jun 2016 22:52:52 +0000 (22:52 +0000)]
[PM] Port JumpThreading to the new PM

This follows the approach in r263208 (for GVN) pretty closely:
- move the bulk of the body of the function to the new PM class.
- expose a runImpl method on the new-PM class that takes the IRUnitT and
  pointers/references to any analyses and use that to implement the
  old-PM class.
- use a private namespace in the header for stuff that used to be file
  scope

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

8 years ago[PM/MergeLoadStoreMotion] Convert the logic to static functions.
Davide Italiano [Mon, 13 Jun 2016 22:27:30 +0000 (22:27 +0000)]
[PM/MergeLoadStoreMotion] Convert the logic to static functions.

Pass AliasAnalyis and MemoryDepResult around. This is in preparation
for porting this pass to the new PM.

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

8 years ago[MBP] Interface cleanups /NFC
Xinliang David Li [Mon, 13 Jun 2016 22:23:44 +0000 (22:23 +0000)]
[MBP] Interface cleanups /NFC

Save machine function pointer so that
the reference does not need to be passed around.

This also gives other methods access to machine
function for information such as entry count etc.

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