| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 55965
|
|
|
|
| |
llvm-svn: 55924
|
|
|
|
| |
llvm-svn: 55913
|
|
|
|
| |
llvm-svn: 55896
|
|
|
|
| |
llvm-svn: 55895
|
|
|
|
|
|
|
| |
long as the callgraph is correct. It checks
for wrong callgraphs more strictly.
llvm-svn: 55894
|
|
|
|
| |
llvm-svn: 55883
|
|
|
|
|
|
|
|
| |
0 parameters.
this pass doesnt seem to be used, but still it's now a little more correct
llvm-svn: 55873
|
|
|
|
|
|
|
|
|
|
|
|
| |
call (thus changing the call site) it didn't
inform the callgraph about this. But the
call site does matter - as shown by the testcase,
the callgraph become invalid after the inliner
ran (with an edge between two functions simply
missing), resulting in wrong deductions by
GlobalsModRef.
llvm-svn: 55872
|
|
|
|
|
|
| |
commit.
llvm-svn: 55865
|
|
|
|
| |
llvm-svn: 55861
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
because it does not maintain a correct list
of callsites. I discovered (see following
commit) that the inliner will create a wrong
callgraph if it is fed a callgraph with
correct edges but incorrect callsites. These
were created by Prune-EH, and while it wasn't
done via removeCallEdgeTo, it could have been
done via removeCallEdgeTo, which is an accident
waiting to happen. Use removeCallEdgeFor
instead.
llvm-svn: 55859
|
|
|
|
|
|
| |
edges one by one by hand.
llvm-svn: 55836
|
|
|
|
| |
llvm-svn: 55835
|
|
|
|
|
|
| |
it modifies a functions attributes.
llvm-svn: 55831
|
|
|
|
| |
llvm-svn: 55806
|
|
|
|
| |
llvm-svn: 55792
|
|
|
|
|
|
| |
size.
llvm-svn: 55786
|