| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
survive long enough to allow the matching.
llvm-svn: 275046
|
| |
|
|
|
|
| |
vectors.
llvm-svn: 275045
|
| |
|
|
|
|
|
|
| |
marked for CanFoldAsLoad.
I don't really know how to test this.
llvm-svn: 275044
|
| |
|
|
|
|
| |
Reverting r275027 and r275033. These seem to cause miscompiles on the AArch64 buildbot.
llvm-svn: 275042
|
| |
|
|
|
|
|
|
|
| |
For functions which are known to return a specific argument, pointer-comparison
folding can look through the function calls as part of its analysis.
Differential Revision: http://reviews.llvm.org/D9387
llvm-svn: 275039
|
| |
|
|
|
|
|
|
|
| |
For functions which are known to return their argument,
isDereferenceableAndAlignedPointer can examine the argument value.
Differential Revision: http://reviews.llvm.org/D9384
llvm-svn: 275038
|
| |
|
|
|
|
|
|
|
| |
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
llvm-svn: 275037
|
| |
|
|
|
|
|
|
|
| |
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
llvm-svn: 275036
|
| |
|
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 275035
|
| |
|
|
|
|
|
| |
Suggested post-commit by David Majnemer on IRC (following-up on a pre-commit
review comment).
llvm-svn: 275033
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 275031
|
| |
|
|
|
|
| |
Calls to matchVectorShuffleAsInsertPS only need to ensure the inputs are 128-bit vectors. Only lowerVectorShuffleAsInsertPS needs to ensure that they are v4f32.
llvm-svn: 275028
|
| |
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 275027
|
| |
|
|
| |
llvm-svn: 275025
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D21622
llvm-svn: 275024
|
| |
|
|
| |
llvm-svn: 275022
|
| |
|
|
| |
llvm-svn: 275021
|
| |
|
|
| |
llvm-svn: 275017
|
| |
|
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 275016
|
| |
|
|
| |
llvm-svn: 275015
|
| |
|
|
| |
llvm-svn: 275014
|
| |
|
|
| |
llvm-svn: 275011
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 275010
|
| |
|
|
|
|
|
| |
PDBFile::getBlockData didn't really return any indication that it
failed. It merely returned an empty buffer.
llvm-svn: 275009
|
| |
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 275004
|
| |
|
|
| |
llvm-svn: 275000
|
| |
|
|
|
|
|
|
|
| |
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).
llvm-svn: 274995
|
| |
|
|
| |
llvm-svn: 274990
|
| |
|
|
| |
llvm-svn: 274988
|
| |
|
|
|
|
|
| |
There exists no relocation which can describe the address of a
dllimported variable: do not try to describe their location.
llvm-svn: 274986
|
| |
|
|
|
|
|
|
|
| |
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.
llvm-svn: 274982
|
| |
|
|
| |
llvm-svn: 274981
|
| |
|
|
|
|
| |
predicate operand to ShiftRR
llvm-svn: 274980
|
| |
|
|
| |
llvm-svn: 274979
|
| |
|
|
| |
llvm-svn: 274978
|
| |
|
|
|
|
| |
No functionality change intended.
llvm-svn: 274973
|
| |
|
|
| |
llvm-svn: 274970
|
| |
|
|
|
|
| |
Also fix test not actually using function labels.
llvm-svn: 274969
|
| |
|
|
| |
llvm-svn: 274966
|
| |
|
|
|
|
|
| |
Chandler pointed out in his review but I forgot to remove before
committing, my bad.
llvm-svn: 274963
|
| |
|
|
| |
llvm-svn: 274962
|
| |
|
|
|
|
|
| |
`const` was dropped by r274958, and the lack of `const` makes GCC6
(correctly) complain.
llvm-svn: 274961
|
| |
|
|
| |
llvm-svn: 274960
|
| |
|
|
|
|
|
|
|
| |
While here move simplifyLoop() function to the new header, as
suggested by Chandler in the review.
Differential Revision: http://reviews.llvm.org/D21404
llvm-svn: 274959
|
| |
|
|
|
|
|
|
| |
Patch by Jia Chen.
Differential Revision: http://reviews.llvm.org/D22022
llvm-svn: 274958
|
| |
|
|
|
|
|
|
|
|
|
| |
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
llvm-svn: 274957
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 274955
|
| |
|
|
| |
llvm-svn: 274954
|
| |
|
|
| |
llvm-svn: 274953
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
llvm-svn: 274952
|