| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
when deciding whether to mark a function readnone/readonly.
Since the pass is currently run before SROA, this may be
quite helpful. Requested by Chris on IRC.
llvm-svn: 57050
|
| |
|
|
|
|
| |
applicable.
llvm-svn: 57033
|
| |
|
|
|
|
| |
While hosting instruction check PHI node.
llvm-svn: 57025
|
| |
|
|
|
|
| |
Why? Because it was there!
llvm-svn: 56996
|
| |
|
|
| |
llvm-svn: 56994
|
| |
|
|
|
|
|
|
|
|
|
| |
pointer bitcasts and GEP's", and centralize the
logic in Value::getUnderlyingObject. The
difference with stripPointerCasts is that
stripPointerCasts only strips GEPs if all
indices are zero, while getUnderlyingObject
strips GEPs no matter what the indices are.
llvm-svn: 56922
|
| |
|
|
| |
llvm-svn: 56917
|
| |
|
|
|
|
| |
instruction, not after. This fixes some uses of free'd memory.
llvm-svn: 56908
|
| |
|
|
| |
llvm-svn: 56887
|
| |
|
|
|
|
| |
attributes
llvm-svn: 56868
|
| |
|
|
| |
llvm-svn: 56834
|
| |
|
|
|
|
|
| |
huge simply connected components. Suggested
by Chris.
llvm-svn: 56787
|
| |
|
|
| |
llvm-svn: 56786
|
| |
|
|
| |
llvm-svn: 56784
|
| |
|
|
|
|
|
| |
instead of hasWeakLinkage in a bunch of optimization
passes.
llvm-svn: 56782
|
| |
|
|
| |
llvm-svn: 56716
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- return attributes - inreg, zext and sext
- parameter attributes
- function attributes - nounwind, readonly, readnone, noreturn
Return attributes use 0 as the index.
Function attributes use ~0U as the index.
This patch requires corresponding changes in llvm-gcc and clang.
llvm-svn: 56704
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
s/ParamAttr/Attribute/g
s/PAList/AttrList/g
s/FnAttributeWithIndex/AttributeWithIndex/g
s/FnAttr/Attribute/g
This sets the stage
- to implement function notes as function attributes and
- to distinguish between function attributes and return value attributes.
This requires corresponding changes in llvm-gcc and clang.
llvm-svn: 56622
|
| |
|
|
| |
llvm-svn: 56549
|
| |
|
|
| |
llvm-svn: 56546
|
| |
|
|
| |
llvm-svn: 56535
|
| |
|
|
| |
llvm-svn: 56527
|
| |
|
|
|
|
| |
Do not check isDeclaration() in hasNote(). It is clients' responsibility.
llvm-svn: 56524
|
| |
|
|
| |
llvm-svn: 56513
|
| |
|
|
|
|
| |
Function Notes also. Function notes are stored at index ~0.
llvm-svn: 56511
|
| |
|
|
| |
llvm-svn: 56477
|
| |
|
|
| |
llvm-svn: 56419
|
| |
|
|
|
|
| |
of mayReadFromMemory and mayWriteToMemory.
llvm-svn: 56387
|
| |
|
|
|
|
|
|
| |
Unfortunately this means removing one regression test
of GlobalsModRef because I couldn't work out how to
perform it without MarkModRef.
llvm-svn: 56342
|
| |
|
|
|
|
|
|
|
| |
can get the readnone/readonly attributes, and gives them it.
The plan is to remove markmodref (which did the same thing
by querying GlobalsModRef) and delete the analogous
functionality from GlobalsModRef.
llvm-svn: 56341
|
| |
|
|
|
|
| |
Fixes PR 2805
llvm-svn: 56321
|
| |
|
|
|
|
|
|
| |
the "erase".
Thanks to Ji Young Park for the patch!
llvm-svn: 56316
|
| |
|
|
| |
llvm-svn: 56315
|
| |
|
|
|
|
| |
branch condition.
llvm-svn: 56286
|
| |
|
|
|
|
| |
This one slipped through cracks very well.
llvm-svn: 56284
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Recognize expressions like "x > -1 ? x : 0" as min/max and turn them
into expressions like "x < 0 ? 0 : x", which is easily recognizable
as a min/max operation.
- Refrain from folding expression like "y/2 < 1" to "y < 2" when the
comparison is being used as part of a min or max idiom, like
"y/2 < 1 ? 1 : y/2". In that case, the division has another use, so
folding doesn't eliminate it, and obfuscates the min/max, making it
harder to recognize as a min/max operation.
These benefit ScalarEvolution, CodeGen, and anything else that wants to
recognize integer min and max.
llvm-svn: 56246
|
| |
|
|
|
|
|
|
|
| |
cases. See the comment above OptimizeSMax for the full story, and
the testcase for an example. This cancels out a pessimization
commonly attributed to indvars, and will allow us to lift some of
the artificial throttles in indvars, rather than add new ones.
llvm-svn: 56230
|
| |
|
|
|
|
|
| |
getelementptr indices, inserting an explicit cast if necessary.
This helps expose the sign-extension operation to other optimizations.
llvm-svn: 56133
|
| |
|
|
|
|
| |
Patch by Nicolas Capens!
llvm-svn: 56129
|
| |
|
|
|
|
|
| |
cases it was still getting lucky and detecting overflow
but it was clearly incorrect.
llvm-svn: 56113
|
| |
|
|
|
|
| |
multiplication overflows.
llvm-svn: 56082
|
| |
|
|
|
|
| |
condition. This fixes PR2740.
llvm-svn: 56076
|
| |
|
|
| |
llvm-svn: 56056
|
| |
|
|
| |
llvm-svn: 56040
|
| |
|
|
|
|
| |
extend the type of induction variable.
llvm-svn: 56017
|
| |
|
|
| |
llvm-svn: 56011
|
| |
|
|
| |
llvm-svn: 56005
|
| |
|
|
| |
llvm-svn: 56001
|
| |
|
|
|
|
|
|
|
|
|
|
| |
users, and teach it about shufflevector instructions.
Also, fix a subtle bug in SimplifyDemandedVectorElts'
insertelement code.
This is a patch that was originally written by Eli Friedman,
with some fixes and cleanup by me.
llvm-svn: 55995
|
| |
|
|
| |
llvm-svn: 55971
|