OSDN Git Service
Hal Finkel [Mon, 11 Jul 2016 02:48:23 +0000 (02:48 +0000)]
Teach SCEV to look through returned-argument functions
When building SCEVs, if a function is known to return its argument, then we can
build the SCEV using the corresponding argument value.
Differential Revision: http://reviews.llvm.org/D9381
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275037
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 11 Jul 2016 02:25:14 +0000 (02:25 +0000)]
Teach computeKnownBits to look through returned-argument functions
If a function is known to return one of its arguments, we can use that in order
to compute known bits of the return value.
Differential Revision: http://reviews.llvm.org/D9397
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275036
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 11 Jul 2016 01:32:20 +0000 (01:32 +0000)]
BasicAA should look through functions with returned arguments
Motivated by the work on the llvm.noalias intrinsic, teach BasicAA to look
through returned-argument functions when answering queries. This is essential
so that we don't loose all other AA information when supplementing with
llvm.noalias.
Differential Revision: http://reviews.llvm.org/D9383
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275035
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 11 Jul 2016 01:28:42 +0000 (01:28 +0000)]
Add a 'Returned' intrinsic property corresponding to the 'returned' argument attribute
This will be used by the upcoming llvm.noalias intrinsic.
Differential Revision: http://reviews.llvm.org/D22201
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275034
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 11 Jul 2016 01:14:21 +0000 (01:14 +0000)]
Don't use a SmallSet for returned attribute inference
Suggested post-commit by David Majnemer on IRC (following-up on a pre-commit
review comment).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275033
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Sun, 10 Jul 2016 23:01:32 +0000 (23:01 +0000)]
Add getReturnedArgOperand to Call/InvokeInst, CallSite
In order to make the optimizer smarter about using the 'returned' argument
attribute (generally, but motivated by my llvm.noalias intrinsic work), add a
utility function to Call/InvokeInst, and CallSite, to make it easy to get the
returned call argument (when one exists).
P.S. There is already an unfortunate amount of code duplication between
CallInst and InvokeInst, and this adds to it. We should probably clean that up
separately.
Differential Revision: http://reviews.llvm.org/D22204
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275031
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 10 Jul 2016 22:26:05 +0000 (22:26 +0000)]
[X86][SSE] Relax type assertions for matchVectorShuffleAsInsertPS
Calls to matchVectorShuffleAsInsertPS only need to ensure the inputs are 128-bit vectors. Only lowerVectorShuffleAsInsertPS needs to ensure that they are v4f32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275028
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Sun, 10 Jul 2016 22:02:55 +0000 (22:02 +0000)]
Let FuncAttrs infer the 'returned' argument attribute
A function can have one argument with the 'returned' attribute, indicating that
the associated argument is always the return value of the function. Add
FuncAttrs inference logic.
Differential Revision: http://reviews.llvm.org/D22202
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275027
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Sun, 10 Jul 2016 21:52:39 +0000 (21:52 +0000)]
Update the LangRef description of the 'returned' attribute
The description of the 'returned' attribute says that it is only used when
code-generating the caller. I'd like to make the optimizer smarter about
looking through functions with returned arguments (generally, but motivated by
my llvm.noalias work). As David pointed out in the review of D22202, the
LangRef should be updated to make its expanded uses clearer.
Differential Revision: http://reviews.llvm.org/D22205
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275026
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 10 Jul 2016 21:27:06 +0000 (21:27 +0000)]
[DAG] make isConstantSplatVector() available to the rest of lowering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275025
91177308-0d34-0410-b5e6-
96231b3b80d8
Jan Vesely [Sun, 10 Jul 2016 21:20:29 +0000 (21:20 +0000)]
AMDGPU/R600: Add implicitarg.ptr intrinsic
Differential Revision: http://reviews.llvm.org/D21622
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275024
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 10 Jul 2016 21:02:47 +0000 (21:02 +0000)]
[X86][SSE] Add support for target shuffle combining to PSHUFLW/PSHUFHW
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275022
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 10 Jul 2016 21:02:16 +0000 (21:02 +0000)]
fix documentation comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275021
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 10 Jul 2016 20:45:14 +0000 (20:45 +0000)]
[x86, SSE, AVX] add tests for icmp+zext (PR28484)
Note the inconsistent vpbroadcast generation for AVX2; another bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275020
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 10 Jul 2016 20:19:56 +0000 (20:19 +0000)]
[X86][SSE] Added tests for combining shuffles to PSHUFLW/PSHUFHW
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275019
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 10 Jul 2016 16:11:53 +0000 (16:11 +0000)]
[Support] Make helper function static. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275017
91177308-0d34-0410-b5e6-
96231b3b80d8
Marcin Koscielnicki [Sun, 10 Jul 2016 14:41:22 +0000 (14:41 +0000)]
[SystemZ] Utilize Test Data Class instructions.
This adds a new SystemZ-specific intrinsic, llvm.s390.tdc.f(32|64|128),
which maps straight to the test data class instructions. A new IR pass
is added to recognize instructions that can be converted to TDC and
perform the necessary replacements.
Differential Revision: http://reviews.llvm.org/D21949
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275016
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 10 Jul 2016 13:05:57 +0000 (13:05 +0000)]
reformat, fix comments/names; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275015
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 10 Jul 2016 11:28:51 +0000 (11:28 +0000)]
Give helper classes/functions internal linkage. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275014
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 10 Jul 2016 10:17:36 +0000 (10:17 +0000)]
[codeview] Drop unused private inheritance.
There is no polymorphism here, and StreamRef already contains a
StreamInterface pointer. Dropping the base class makes StreamRef more
transparent to the compiler, for example it can find unused variables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275013
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 10 Jul 2016 05:55:53 +0000 (05:55 +0000)]
[AVX512] Add support for lowering to 512-bit SHUFPS.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275011
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sun, 10 Jul 2016 05:32:05 +0000 (05:32 +0000)]
[pdb] Sanity check the stream map
Some abstractions in LLVM "know" that they are reading in-bounds,
FixedStreamArray, and provide a simple result. This breaks down if the
stream map is bogus.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275010
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sun, 10 Jul 2016 03:34:47 +0000 (03:34 +0000)]
[llvm-pdbdump] Propagate errors a little more consistently
PDBFile::getBlockData didn't really return any indication that it
failed. It merely returned an empty buffer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275009
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 10 Jul 2016 02:43:50 +0000 (02:43 +0000)]
[cmake] Change lli-child-target to use add_llvm_utility instead of add_llvm_executable.
We are currently using add_llvm_utility for executable targets that:
1. Are built by default.
2. Used for testing.
3. Are not installed by default.
Originally, lli-child-target used add_llvm_tool instead of add_llvm_executable
directly. This was changed so that lli-child-target would not be installed. This
was good since this is only used for testing and should never be installed for
users. This also had the unfortunate side effect that one can never turn off the
building of lli-child-target by default, a regression for projects that by
default do not want to compile any LLVM tools beyond tablegen/llvm-config.
This patch changes lli-child-target to use add_llvm_utility. This makes sense
since:
1. lli-child-target matches the semantics of executables created with
add_llvm_utility.
2. We fix the regression since now one can use the flag LLVM_BUILD_UTILS to
eliminate default compilation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275008
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 10 Jul 2016 02:43:47 +0000 (02:43 +0000)]
[cmake] Create the LLVM_BUILD_UTILS option.
This option is the equivalent option to LLVM_BUILD_TOOLS but for executables
created via add_llvm_utility.
This is a useful tool for improving compile time in situations where LLVM is
used as a library and no testing tools are needed.
It follows the exact same implemention model as LLVM_BUILD_TOOLS.
Since the option is by default set to on, no behavior is changed unless one sets
it from the command line to be false.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275007
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sun, 10 Jul 2016 00:35:15 +0000 (00:35 +0000)]
[SCCP] Rename undefined -> unknown.
In the solver, isUndefined() does really mean "we don't know the
value yet" rather than "this is an UndefinedValue". Discussed with
Eli Friedman.
Differential Revision: http://reviews.llvm.org/D22192
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275004
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sat, 9 Jul 2016 23:08:14 +0000 (23:08 +0000)]
[docs] Fix up a broken link.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275002
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sat, 9 Jul 2016 22:56:50 +0000 (22:56 +0000)]
[PM] Port LoopVectorize to the new PM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275000
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sat, 9 Jul 2016 22:56:39 +0000 (22:56 +0000)]
Fix up an include guard.
This should have been done as part of the move in r274960.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274999
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sat, 9 Jul 2016 22:49:35 +0000 (22:49 +0000)]
[SCCP] Remove wrong and misleading vector handling code.
This code was already commented out and it made some weird assumptions,
e.g. using isUndefined() as "this value is UndefValue" instead of
"we haven't computed this value is yet". Thanks to Eli Friedman for
pointing out where I was wrong (and where this code was wrong).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274995
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 9 Jul 2016 21:47:55 +0000 (21:47 +0000)]
[X86][SSE] Add support for target shuffle combining to INSERTPS
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274990
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 9 Jul 2016 21:12:03 +0000 (21:12 +0000)]
[X86][SSE] Use scaleShuffleMask helper. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274988
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 9 Jul 2016 20:55:20 +0000 (20:55 +0000)]
[X86][SSE] Regenerate vector shift tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274987
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sat, 9 Jul 2016 20:47:48 +0000 (20:47 +0000)]
[COFF, Dwarf] Don't emit DW_AT_location for dllimported entities
There exists no relocation which can describe the address of a
dllimported variable: do not try to describe their location.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274986
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Sat, 9 Jul 2016 19:13:18 +0000 (19:13 +0000)]
[SLSR] Fix crash on handling 128-bit integers.
ConstantInt::getSExtValue may fail on >64-bit integers. Add checks to call
getSExtValue only on narrow integers.
As a minor aside, simplify slsr-gep.ll to remove unnecessary load instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274982
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 9 Jul 2016 18:52:07 +0000 (18:52 +0000)]
fix documentation comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274981
91177308-0d34-0410-b5e6-
96231b3b80d8
Jacques Pienaar [Sat, 9 Jul 2016 18:26:04 +0000 (18:26 +0000)]
[lanai] Treat .t as optional in assembly parser for RR operands and add predicate operand to ShiftRR
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274980
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Sat, 9 Jul 2016 18:11:15 +0000 (18:11 +0000)]
AMDGPU: Move R600 only pieces into R600 classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274979
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Sat, 9 Jul 2016 17:18:39 +0000 (17:18 +0000)]
Revert "AMDGPU: Remove unused control flow intrinsic"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274978
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 9 Jul 2016 10:36:36 +0000 (10:36 +0000)]
[ArgPromote] Use function_ref and for-range loops.
No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274973
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Sat, 9 Jul 2016 08:02:28 +0000 (08:02 +0000)]
AMDGPU: Merge / reorganize tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274972
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Sat, 9 Jul 2016 07:55:03 +0000 (07:55 +0000)]
AMDGPU: Simplify tests with per function subtargets
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274971
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 9 Jul 2016 07:54:27 +0000 (07:54 +0000)]
AMDGPU: Prune AMDGPUAsmParser in libdeps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274970
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Sat, 9 Jul 2016 07:48:11 +0000 (07:48 +0000)]
AMDGPU: Fix fdiv lowering when f32 denormals supported
Also fix test not actually using function labels.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274969
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 9 Jul 2016 04:38:30 +0000 (04:38 +0000)]
[X86] Remove sse41 extract intrinsics. They are not used by clang and are not implemented by the x86 backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274967
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 9 Jul 2016 04:38:27 +0000 (04:38 +0000)]
[X86] Remove and autoupgrade 512-bit non-temporal store intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274966
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sat, 9 Jul 2016 03:27:24 +0000 (03:27 +0000)]
[LoopSimplify] Remove a comment which is unlikely to age well.
Chandler pointed out in his review but I forgot to remove before
committing, my bad.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274963
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sat, 9 Jul 2016 03:25:35 +0000 (03:25 +0000)]
[PM] Port CrossDSOCFI to the new pass manager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274962
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Sat, 9 Jul 2016 03:21:25 +0000 (03:21 +0000)]
[CFLAA] Make a constant variable `const`. NFC.
`const` was dropped by r274958, and the lack of `const` makes GCC6
(correctly) complain.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274961
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sat, 9 Jul 2016 03:11:29 +0000 (03:11 +0000)]
[PM] Fix a think-o. mv {Scalar,Vectorize}/SLPVectorize.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274960
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sat, 9 Jul 2016 03:03:01 +0000 (03:03 +0000)]
[PM] Port LoopSimplify to the new pass manager.
While here move simplifyLoop() function to the new header, as
suggested by Chandler in the review.
Differential Revision: http://reviews.llvm.org/D21404
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274959
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Sat, 9 Jul 2016 02:54:42 +0000 (02:54 +0000)]
[CFLAA] Move the graph builder out from CFLSteens. NFC.
Patch by Jia Chen.
Differential Revision: http://reviews.llvm.org/D22022
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274958
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Sat, 9 Jul 2016 02:48:56 +0000 (02:48 +0000)]
[CFLAA] Simplify CFLGraphBuilder. NFC.
This removes a few fields from the graph builder by making us compute
things (that we'd always compute anyway) more eagerly.
Patch by Jia Chen.
Differential Revision: http://reviews.llvm.org/D22009
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274957
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Sat, 9 Jul 2016 01:31:36 +0000 (01:31 +0000)]
LivePhysRegs: addLiveOuts() can skip addPristines() in ret block
Drive-by improvement: We would 1) add CSRs, 2) remove callee saved CSRs
and 3) add all CSRs again for the return block. Just adding CSRs once
obviously gives the same results.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274955
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Sat, 9 Jul 2016 01:13:56 +0000 (01:13 +0000)]
AMDGPU: Improve offset folding for register indexing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274954
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Sat, 9 Jul 2016 01:13:51 +0000 (01:13 +0000)]
AMDGPU: Simplify isSchedulingBoundary
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274953
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Sat, 9 Jul 2016 00:19:07 +0000 (00:19 +0000)]
VirtRegMap: Replace some identity copies with KILL instructions.
An identity COPY like this:
%AL = COPY %AL, %EAX<imp-def>
has no semantic effect, but encodes liveness information: Further users
of %EAX only depend on this instruction even though it does not define
the full register.
Replace the COPY with a KILL instruction in those cases to maintain this
liveness information. (This reverts a small part of r238588 but this
time adds a comment explaining why a KILL instruction is useful).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274952
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Sat, 9 Jul 2016 00:18:43 +0000 (00:18 +0000)]
AsmPrinter: Fix emitKill() not flush()ing a raw_string_ostream
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274951
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Fri, 8 Jul 2016 23:47:29 +0000 (23:47 +0000)]
Added REQUIRES to TestingGuide documentation
Reviewers: alexfh, wolfgangp, rengolin
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D22172
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274949
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Fri, 8 Jul 2016 23:01:49 +0000 (23:01 +0000)]
Add 'thinlto_src_module' md with asserts or -enable-import-metadata
Summary:
This way the metadata will be only generated when asserts enabled,
or when -enable-import-metadata specified
FIXED missing colon on requires.
Reviewers: tejohnson, eraman, mehdi_amini
Subscribers: mehdi_amini, llvm-commits
Differential Revision: http://reviews.llvm.org/D22167
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274947
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Fri, 8 Jul 2016 22:55:48 +0000 (22:55 +0000)]
Revert "Add 'thinlto_src_module' md with asserts or -enable-import-metadata"
Reverting because of 17463
http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/17463
This reverts commit
d20cb431bba2ba43b4c65a8556cff445bfefbb7c.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274946
91177308-0d34-0410-b5e6-
96231b3b80d8
Jacques Pienaar [Fri, 8 Jul 2016 22:28:29 +0000 (22:28 +0000)]
[lanai] Update test to use peephole-opt and not peephole-opts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274945
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Fri, 8 Jul 2016 22:15:08 +0000 (22:15 +0000)]
Revert "InstCombine rule to fold truncs whose value is available"
This reverts commit r274853.
Caused failure in ppcBE build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274943
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 22:11:30 +0000 (22:11 +0000)]
Lanai: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleIterator to
MachineInstr* in the Lanai backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274942
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 8 Jul 2016 21:54:16 +0000 (21:54 +0000)]
[MC, COFF] Permit a variable to be redefined
Our assertions in WinCOFFStreamer had unexpected side effects resulting
in symbols getting unexpectedly marked as used.
This fixes PR28462.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274941
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Fri, 8 Jul 2016 21:48:05 +0000 (21:48 +0000)]
[TTI] Expose TTI::getGEPCost and use it in SLSR and NaryReassociate.
NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274940
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 8 Jul 2016 21:39:44 +0000 (21:39 +0000)]
AMDGPU: Remove unused control flow intrinsic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274939
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Fri, 8 Jul 2016 21:25:39 +0000 (21:25 +0000)]
Add 'thinlto_src_module' md with asserts or -enable-import-metadata
Summary:
This way the metadata will be only generated when asserts enabled,
or when -enable-import-metadata specified
Reviewers: tejohnson, eraman, mehdi_amini
Subscribers: mehdi_amini, llvm-commits
Differential Revision: http://reviews.llvm.org/D22167
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274938
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 8 Jul 2016 21:25:33 +0000 (21:25 +0000)]
Reapply r274829 with fix for FP vectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274937
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Fri, 8 Jul 2016 21:24:13 +0000 (21:24 +0000)]
[BFI] Minor cleanup. NFC
Use typedef Result in BlockFrequencyAnalysis::run. Fix typo in comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274936
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Fri, 8 Jul 2016 21:24:06 +0000 (21:24 +0000)]
[LAA] Port test to the new PM
This is a follow-on to r274452.
The LAA with the new PM is a loop pass so we go from inner to outer loops.
Also using a CHECK-NOT didn't make much sense because we print something
in either case; whether an invariant is 'found' or 'not found'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274935
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Fri, 8 Jul 2016 21:21:44 +0000 (21:21 +0000)]
[PM] name the new PM LAA class LoopAccessAnalysis (LAA) /NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274934
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 21:19:46 +0000 (21:19 +0000)]
MSP430: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleIIterator to
MachineInstr* in the MSP430 backend by preferring MachineInstr& over
MachineInstr* when a pointer isn't nullable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274933
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 8 Jul 2016 21:17:51 +0000 (21:17 +0000)]
[InstCombine] don't form select from bitcasted logic ops if bitcasts have >1 use
This isn't a sure thing (are 2 extra bitcasts less expensive than a logic op?),
but we'll try to err on the conservative side by going with the case that has
less IR instructions.
Note: This question came up in http://reviews.llvm.org/D22114 , but this part is
independent of that patch proposal, so I'm making this small change ahead of that
one.
See also:
http://reviews.llvm.org/rL274926
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274932
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 21:10:58 +0000 (21:10 +0000)]
NVPTX: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleIterator to
MachineInstr* in the NVPTX backend, mainly by preferring MachineInstr&
over MachineInstr* when a pointer isn't nullable and using range-based
for loops.
There was one piece of questionable code in
NVPTXInstrInfo::AnalyzeBranch, where a condition checked a pointer
converted from an iterator for nullptr. Since this case is impossible
(moreover, the code above guarantees that the iterator is valid), I
removed the check when I changed the pointer to a reference.
Despite that case, there should be no functionality change here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274931
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 8 Jul 2016 21:08:16 +0000 (21:08 +0000)]
add another multi-use test for logic->select transform
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274929
91177308-0d34-0410-b5e6-
96231b3b80d8
Wei Mi [Fri, 8 Jul 2016 21:08:09 +0000 (21:08 +0000)]
Allow dead insts to be kept in DeadRemat only when they are rematerializable.
Because isReallyTriviallyReMaterializableGeneric puts many limits on
rematerializable instructions, this fix can prevent instructions with
tied virtual operands and instructions with virtual register uses from
being kept in DeadRemat, so as to workaround the live interval consistency
problem for the dummy instructions kept in DeadRemat.
But we still need to fix the live interval consistency problem. This patch
is just a short time relieve. PR28464 has been filed as a reminder.
Differential Revision: http://reviews.llvm.org/D19486
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274928
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Fri, 8 Jul 2016 20:55:26 +0000 (20:55 +0000)]
Rename LoopAccessAnalysis to LoopAccessLegacyAnalysis /NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274927
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 8 Jul 2016 20:53:29 +0000 (20:53 +0000)]
[InstCombine] don't form select from logic ops if it's unlikely that we'll eliminate any ops
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274926
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 8 Jul 2016 20:35:53 +0000 (20:35 +0000)]
adjust test so it won't completely optimize away
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274925
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 20:29:42 +0000 (20:29 +0000)]
AArch64: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleInstr to MachineInstr*
in the AArch64 backend, mainly by preferring MachineInstr& over
MachineInstr* when a pointer isn't nullable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274924
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 8 Jul 2016 20:22:27 +0000 (20:22 +0000)]
add tests for multi-use folding to select
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274922
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Fri, 8 Jul 2016 20:21:32 +0000 (20:21 +0000)]
Remove duplicate inclusion /NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274921
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 20:21:17 +0000 (20:21 +0000)]
ARM: Remove implicit iterator conversions, NFC
Remove remaining implicit conversions from MachineInstrBundleIterator to
MachineInstr* from the ARM backend. In most cases, I made them less attractive
by preferring MachineInstr& or using a ranged-based for loop.
Once all the backends are fixed I'll make the operator explicit so that this
doesn't bitrot back.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274920
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 8 Jul 2016 20:14:27 +0000 (20:14 +0000)]
TableGen: Update style in CodeGenIntrinsics. NFC
Ran clang-format to remove the namespace indentation, and stopped
repeating names in doc comments since I was updating every line
anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274919
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Fri, 8 Jul 2016 20:12:44 +0000 (20:12 +0000)]
Remove inline hints computation from SampleProfile.cpp
Summary: As we will move to use uniformed hotness check in inliner, we do not need inline hints in SampleProfile pass any more.
Reviewers: dnovillo, davidxl
Subscribers: eraman, llvm-commits
Differential Revision: http://reviews.llvm.org/D19287
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274918
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 8 Jul 2016 19:52:19 +0000 (19:52 +0000)]
Revert r274829, it caused PR28472.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274916
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 8 Jul 2016 19:51:08 +0000 (19:51 +0000)]
[X86] Regenerated bitreverse tests to demonstrate what is going on.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274915
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 8 Jul 2016 19:48:33 +0000 (19:48 +0000)]
[X86] Added bitreverse tests for non-legal types
Requested on D21578
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274914
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 19:41:40 +0000 (19:41 +0000)]
Sparc: Avoid implicit iterator conversions, NFC
Remove the only implicit conversions from MachineInstrBundleIterator to
MachineInstr* in the Sparc backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274913
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 19:36:40 +0000 (19:36 +0000)]
WebAssembly: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleIterator to
MachineInstr* in the WebAssembly backend by preferring MachineInstr&
over MachineInstr*.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274912
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 19:31:47 +0000 (19:31 +0000)]
AsmPrinter: Avoid implicit iterator conversions in DbgValueHistoryCalculator, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274911
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 8 Jul 2016 19:30:06 +0000 (19:30 +0000)]
[CrossDSOCFI] Change the pass so that it doesn't require doInitialization()
Differential Revision: http://reviews.llvm.org/D21357
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274910
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 8 Jul 2016 19:23:29 +0000 (19:23 +0000)]
[X86][AVX2] Add support for target shuffle combining to VPERMPD/VPERMQ
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274908
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 19:23:12 +0000 (19:23 +0000)]
SelectionDAG: Avoid implicit iterator conversions in SelectionDAGBuilder, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274907
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 19:16:05 +0000 (19:16 +0000)]
AMDGPU: Remove implicit iterator conversions, NFC
Remove remaining implicit conversions from MachineInstrBundleIterator to
MachineInstr* from the AMDGPU backend. In most cases, I made them less
attractive by preferring MachineInstr& or using a ranged-based for loop.
Once all the backends are fixed I'll make the operator explicit so that
this doesn't bitrot back.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274906
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 8 Jul 2016 19:13:40 +0000 (19:13 +0000)]
[SCCP] Fold constants as we build them whne visiting cast instructions.
This should be slightly more efficient and could avoid spurious overdefined
markings, as Eli pointed out.
Differential Revision: http://reviews.llvm.org/D22122
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274905
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 19:11:40 +0000 (19:11 +0000)]
SelectionDAG: Avoid implicit iterator conversions in SelectionDAGISel, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274904
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 19:07:09 +0000 (19:07 +0000)]
SelectionDAG: Avoid implicit iterator conversions in ScheduleDAGSDNodes, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274903
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 8 Jul 2016 19:00:17 +0000 (19:00 +0000)]
AMDGPU: Make infinite loop clear, NFC
Change a while loop that was checking for nullptr on an
iterator-to-pointer conversion to an infinite for loop. Now it's clear
that the condition doesn't terminate.
The only change in behaviour is if an invalid iterator (holding nullptr)
was passed into AMDGPUCFGStructurizer::reversePredicateSetter. There
are only two callers, and they both dereference the iterator before
sending it in, so rather than adding an early return to avoid the loop
I've just asserted (using a static_cast, to avoid an implicit conversion
to pointer).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274902
91177308-0d34-0410-b5e6-
96231b3b80d8