| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 56834
|
| |
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
Unfortunately this means removing one regression test
of GlobalsModRef because I couldn't work out how to
perform it without MarkModRef.
llvm-svn: 56342
|
| |
|
|
|
|
| |
Fixes PR 2805
llvm-svn: 56321
|
| |
|
|
|
|
|
|
| |
the "erase".
Thanks to Ji Young Park for the patch!
llvm-svn: 56316
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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: 55965
|
| |
|
|
| |
llvm-svn: 55924
|
| |
|
|
| |
llvm-svn: 55913
|
| |
|
|
| |
llvm-svn: 55861
|
| |
|
|
| |
llvm-svn: 55806
|
| |
|
|
| |
llvm-svn: 55792
|
| |
|
|
|
|
| |
size.
llvm-svn: 55786
|
| |
|
|
|
|
| |
forms remain to handle older IR files, but will go away soon.
llvm-svn: 55781
|
| |
|
|
| |
llvm-svn: 55779
|
| |
|
|
| |
llvm-svn: 55744
|
| |
|
|
| |
llvm-svn: 55690
|
| |
|
|
| |
llvm-svn: 55682
|
| |
|
|
| |
llvm-svn: 55680
|
| |
|
|
| |
llvm-svn: 55678
|
| |
|
|
|
|
| |
if possible.
llvm-svn: 55674
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
attributes on functions, based on the result of
alias analysis. It's not hardwired to use
GlobalsModRef even though this is the only (AFAIK)
alias analysis that results in this pass actually
doing something. Enable as follows:
opt ... -globalsmodref-aa -markmodref ...
Advantages of this pass: (1) records the result
of globalsmodref in the bitcode, meaning it is
available for use by later passes (currently
the pass manager isn't smart enough to magically
make an advanced alias analysis available to all
later passes), which may expose more optimization
opportunities; (2) hopefully speeds up compilation
when code is optimized twice, for example when a
file is compiled to bitcode, then later LTO is done
on it: marking functions readonly/readnone when
producing the initial bitcode should speed up alias
analysis during LTO; (3) good for discovering that
globalsmodref doesn't work very well :)
Not currently turned on by default.
llvm-svn: 55604
|
| |
|
|
| |
llvm-svn: 55433
|
| |
|
|
| |
llvm-svn: 55424
|
| |
|
|
|
|
|
|
| |
massively complicated CFGs.
This speeds up a particular testcase from 12+ hours to 5 seconds with little perceptible loss of quality.
llvm-svn: 55391
|
| |
|
|
|
|
| |
the cast operation.
llvm-svn: 55374
|
| |
|
|
| |
llvm-svn: 55271
|