summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
Commit message (Collapse)AuthorAgeFilesLines
* Commit CodeGenPrepare.cpp changes which was accidentially left out of 56526.Evan Cheng2008-09-241-19/+2
| | | | llvm-svn: 56549
* Fix fallout in CodeGenPrepare from 56526. Will likely need more work.Eric Christopher2008-09-241-119/+136
| | | | llvm-svn: 56546
* s/ParamAttrsWithIndex/FnAttributeWithIndex/gDevang Patel2008-09-244-27/+27
| | | | llvm-svn: 56535
* Put FN_NOTE_AlwaysInline and others in FnAttr namespace.Devang Patel2008-09-245-5/+5
| | | | llvm-svn: 56527
* Move FN_NOTE_AlwaysInline and other out of ParamAttrs namespace.Devang Patel2008-09-235-5/+5
| | | | | | Do not check isDeclaration() in hasNote(). It is clients' responsibility. llvm-svn: 56524
* s/ParameterAttributes/Attributes/gDevang Patel2008-09-238-26/+25
| | | | llvm-svn: 56513
* Use parameter attribute store (soon to be renamed) forDevang Patel2008-09-235-5/+5
| | | | | | Function Notes also. Function notes are stored at index ~0. llvm-svn: 56511
* Add hasNote() to check note associated with a function.Devang Patel2008-09-225-5/+5
| | | | llvm-svn: 56477
* Initial support for the CMake build system.Oscar Fuentes2008-09-225-0/+91
| | | | llvm-svn: 56419
* Implement review feedback from Devang: make useDuncan Sands2008-09-201-26/+11
| | | | | | of mayReadFromMemory and mayWriteToMemory. llvm-svn: 56387
* Remove the MarkModRef pass (use AddReadAttrs instead).Duncan Sands2008-09-191-69/+0
| | | | | | | | Unfortunately this means removing one regression test of GlobalsModRef because I couldn't work out how to perform it without MarkModRef. llvm-svn: 56342
* Add a new pass AddReadAttrs which works out which functionsDuncan Sands2008-09-191-0/+135
| | | | | | | | | 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
* splitLoop does not handle split condition EQ.Devang Patel2008-09-181-0/+6
| | | | | | Fixes PR 2805 llvm-svn: 56321
* Decrementing the iterator here could be wrong if the worklist is empty after ↵Bill Wendling2008-09-181-4/+5
| | | | | | | | the "erase". Thanks to Ji Young Park for the patch! llvm-svn: 56316
* Try to place hoisted instructions befoe icmp instruction.Devang Patel2008-09-181-2/+23
| | | | llvm-svn: 56315
* Do not hoist instruction above branch condition. The instruction may use ↵Devang Patel2008-09-171-9/+2
| | | | | | branch condition. llvm-svn: 56286
* Do not ignore iv uses outside the loop.Devang Patel2008-09-171-1/+21
| | | | | | This one slipped through cracks very well. llvm-svn: 56284
* Improve instcombine's handling of integer min and max in two ways:Dan Gohman2008-09-161-29/+115
| | | | | | | | | | | | | | | | - 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
* Teach LSR to optimize away SMAX operations for tripcounts in commonDan Gohman2008-09-151-0/+127
| | | | | | | | | 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
* On 64-bit targets, change 32-bit getelementptr indices to be 64-bitDan Gohman2008-09-111-1/+12
| | | | | | | getelementptr indices, inserting an explicit cast if necessary. This helps expose the sign-extension operation to other optimizations. llvm-svn: 56133
* Fix a vectorshuffle instcombine bug introduced by r55995.Dan Gohman2008-09-111-1/+4
| | | | | | Patch by Nicolas Capens! llvm-svn: 56129
* Fix a copy+paste bug that Duncan spotted. For severalDan Gohman2008-09-111-1/+1
| | | | | | | cases it was still getting lucky and detecting overflow but it was clearly incorrect. llvm-svn: 56113
* In my analysis for r56076 I missed the case where the originalDan Gohman2008-09-111-1/+2
| | | | | | multiplication overflows. llvm-svn: 56082
* Fix an icmp+sdiv optimization to check for and handle an overflowDan Gohman2008-09-101-1/+16
| | | | | | condition. This fixes PR2740. llvm-svn: 56076
* fix white spaces.Devang Patel2008-09-101-5/+5
| | | | llvm-svn: 56056
* Fix a warning about comparing signed and unsigned values.Dan Gohman2008-09-101-1/+1
| | | | llvm-svn: 56040
* if loop induction variable is always sign or zero extended then Devang Patel2008-09-091-1/+118
| | | | | | extend the type of induction variable. llvm-svn: 56017
* fix overflow check.Devang Patel2008-09-091-2/+1
| | | | llvm-svn: 56011
* Make safer variant of alias resolution routine to be defaultAnton Korobeynikov2008-09-091-2/+1
| | | | llvm-svn: 56005
* Resolve aliases, when possibleAnton Korobeynikov2008-09-091-0/+22
| | | | llvm-svn: 56001
* Make SimplifyDemandedVectorElts simplify vectors with multipleDan Gohman2008-09-091-34/+82
| | | | | | | | | | | | 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
* Fix simplifycfg crash in handing block merge.Devang Patel2008-09-091-1/+11
| | | | llvm-svn: 55971
* s/RemoveUnreachableBlocks/RemoveUnreachableBlocksFromFn/gDevang Patel2008-09-081-8/+9
| | | | llvm-svn: 55965
* Remove unused counter.Devang Patel2008-09-081-1/+0
| | | | llvm-svn: 55924
* Remove OptimizeIVType()Devang Patel2008-09-081-206/+0
| | | | llvm-svn: 55913
* Update the callgraph correctly.Duncan Sands2008-09-081-1/+4
| | | | llvm-svn: 55896
* Update the callgraph correctly in ArgumentPromotion.Duncan Sands2008-09-081-0/+7
| | | | llvm-svn: 55895
* Reapply 55859. This doesn't change anything asDuncan Sands2008-09-082-13/+11
| | | | | | | long as the callgraph is correct. It checks for wrong callgraphs more strictly. llvm-svn: 55894
* Correct a comment and strip trailing whitespace.Duncan Sands2008-09-071-25/+25
| | | | llvm-svn: 55883
* fix crash when the malloc/free function is defined or is a declaration with ↵Nuno Lopes2008-09-061-4/+2
| | | | | | | | 0 parameters. this pass doesnt seem to be used, but still it's now a little more correct llvm-svn: 55873
* When PruneEH turned an invoke into an ordinaryDuncan Sands2008-09-061-0/+6
| | | | | | | | | | | | 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
* Revert r55859. This is breaking the build in the abscence of its companion ↵Owen Anderson2008-09-052-11/+13
| | | | | | commit. llvm-svn: 55865
* Remove unused map.Devang Patel2008-09-051-1/+0
| | | | llvm-svn: 55861
* Delete the removeCallEdgeTo callgraph method,Duncan Sands2008-09-052-13/+11
| | | | | | | | | | | | | | | 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
* Use removeAllCalledFunctions rather than removingDuncan Sands2008-09-051-5/+3
| | | | | | edges one by one by hand. llvm-svn: 55836
* Remove trailing whitespace.Duncan Sands2008-09-051-36/+36
| | | | llvm-svn: 55835
* Make this pass return that it made a change ifDuncan Sands2008-09-051-1/+5
| | | | | | it modifies a functions attributes. llvm-svn: 55831
* A loop may be unswitched multiple times. Reconstruct dom info. at the end.Devang Patel2008-09-041-5/+8
| | | | llvm-svn: 55806
* Initialize loop data first.Devang Patel2008-09-041-2/+1
| | | | llvm-svn: 55792
* Do not unswitch if the function notes say we're optimizing this function for ↵Devang Patel2008-09-041-1/+7
| | | | | | size. llvm-svn: 55786
OpenPOWER on IntegriCloud