summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils
Commit message (Collapse)AuthorAgeFilesLines
* Fix some nondeterministic behavior when forwardingDale Johannesen2009-03-121-3/+13
| | | | | | | | | from a switch table. Multiple table entries that branch to the same place were being sorted by the pointer value of the ConstantInt*; changed to sort by the actual value of the ConstantInt. llvm-svn: 66749
* Don't consider debug intrinsics when checkingDale Johannesen2009-03-101-2/+2
| | | | | | whether a callee to be inlined is a leaf. llvm-svn: 66588
* Ignore dbg info, while estimating size of jump through block.Devang Patel2009-03-101-1/+3
| | | | llvm-svn: 66554
* If a function is marked alwaysinline, it must be inlined (possibly for ↵Evan Cheng2009-03-101-7/+7
| | | | | | correctness). Do so even if the callee has dynamic alloca and the caller doesn't. llvm-svn: 66539
* Introduce new linkage types linkonce_odr, weak_odr, common_odrDuncan Sands2009-03-072-7/+4
| | | | | | | | | | | | | | | | | | | | | and extern_weak_odr. These are the same as the non-odr versions, except that they indicate that the global will only be overridden by an *equivalent* global. In C, a function with weak linkage can be overridden by a function which behaves completely differently. This means that IP passes have to skip weak functions, since any deductions made from the function definition might be wrong, since the definition could be replaced by something completely different at link time. This is not allowed in C++, thanks to the ODR (One-Definition-Rule): if a function is replaced by another at link-time, then the new function must be the same as the original function. If a language knows that a function or other global can only be overridden by an equivalent global, it can give it the weak_odr linkage type, and the optimizers will understand that it is alright to make deductions based on the function body. The code generators on the other hand map weak and weak_odr linkage to the same thing. llvm-svn: 66339
* Fix another case where debug info interferes withDale Johannesen2009-03-061-2/+6
| | | | | | an optimization. llvm-svn: 66288
* While hoisting instruction to speculatively execute simple bb, ignore dbg ↵Devang Patel2009-03-061-18/+30
| | | | | | intrinsics. llvm-svn: 66255
* Tweak the check for promotable alloca's to handleDale Johannesen2009-03-061-1/+7
| | | | | | debug intrinsics correctly. llvm-svn: 66225
* Add "check/remove dbg var" helper routines.Devang Patel2009-03-061-0/+44
| | | | llvm-svn: 66223
* Revert unintended commmit.Dale Johannesen2009-03-041-5/+2
| | | | llvm-svn: 66001
* Skip ptr-to-ptr bitcasts when counting in another case.Dale Johannesen2009-03-041-4/+4
| | | | llvm-svn: 66000
* Always skip ptr-to-ptr bitcasts when counting,Dale Johannesen2009-03-041-2/+5
| | | | | | per Chris' suggestion. Slightly faster. llvm-svn: 65999
* Marking debug info intrinsics as not touching memoryDale Johannesen2009-03-031-0/+3
| | | | | | caused them to be considered trivially dead. Fix this. llvm-svn: 65979
* Instruction counters must skip the bitcasts thatDale Johannesen2009-03-031-0/+6
| | | | | | | feed into llvm.dbg.declare nodes, as well as the debug directives themselves. llvm-svn: 65976
* When removing a store to an alloca that has only oneDale Johannesen2009-03-031-2/+1
| | | | | | | | use, check also for the case where it has two uses, the other being a llvm.dbg.declare. This is needed so debug info doesn't affect codegen. llvm-svn: 65970
* Remove accidental check-ins in r65960. :-(Bill Wendling2009-03-031-5/+1
| | | | llvm-svn: 65961
* Use > instead of >=. We want to promote aggregates of 128-bytes.Bill Wendling2009-03-031-1/+5
| | | | llvm-svn: 65960
* Fix a bunch of Doxygen syntax issues. Escape special characters,Dan Gohman2009-03-031-2/+2
| | | | | | and put @file directives on their own comment line. llvm-svn: 65920
* When sinking an insn in InstCombine bring its debugDale Johannesen2009-03-031-2/+25
| | | | | | | | info with it. Don't count debug info insns against the scan maximum in FindAvailableLoadedValue (lest they affect codegen). llvm-svn: 65910
* Fix compiler warning about uninitialized variables. No functional change.Nick Lewycky2009-02-271-1/+1
| | | | llvm-svn: 65620
* Ignore dbg info intrinsics when folding conditional branch to Zhou Sheng2009-02-261-1/+5
| | | | | | conditional branch predecessors. llvm-svn: 65509
* Don't block basic block with only SwitchInst to fold into predecessors.Zhou Sheng2009-02-251-1/+5
| | | | llvm-svn: 65456
* While folding unconditional return move DbgRegionEndInst into the ↵Devang Patel2009-02-242-23/+10
| | | | | | | | | | | predecessor, instead of removing it. This fixes following tests from llvmgcc42 testsuite. gcc.c-torture/execute/20000605-3.c gcc.c-torture/execute/20020619-1.c gcc.c-torture/execute/20030920-1.c gcc.c-torture/execute/loop-ivopts-1.c llvm-svn: 65353
* Changed option name from inline-threshold to basic-inline-threshold becauseMon P Wang2009-02-231-1/+1
| | | | | | inline-threshold option is used by the inliner. llvm-svn: 65309
* Add AddrModeMatcher.cppEvan Cheng2009-02-211-0/+1
| | | | llvm-svn: 65228
* Factor address mode matcher out of codegen prepare to make it available to ↵Evan Cheng2009-02-201-0/+593
| | | | | | other passes, e.g. loop strength reduction. llvm-svn: 65134
* Just roll back the previous change to -mem2reg.Zhou Sheng2009-02-201-26/+0
| | | | | | Will re-think about this according to Chris's comments. llvm-svn: 65126
* patch to update the line number information in pass -mem2reg.Zhou Sheng2009-02-201-0/+26
| | | | | | | | Currently this pass will delete the variable declaration info, and keep the line number info. But the kept line number info is not updated, and some is redundant or not correct, this patch just updates those info. llvm-svn: 65123
* Fix typo caused by too much surfing, dudes...Nick Lewycky2009-02-161-1/+1
| | | | llvm-svn: 64626
* Fix a nasty bug (PR3550) where the inline pass could incorrectly mark Chris Lattner2009-02-121-2/+2
| | | | | | | calls with the tail marker when inlining them through an invoke. Patch, testcase, and perfect analysis by Jay Foad! llvm-svn: 64364
* If llvm.dbg.region.end is disappearing then remove corresponding ↵Devang Patel2009-02-112-3/+23
| | | | | | llvm.dbg.func.start also. llvm-svn: 64278
* Ignore dbg intrinsic while folding unconditional branch.Devang Patel2009-02-101-1/+2
| | | | llvm-svn: 64242
* Do not clone llvm.dbg.func.start and corresponding llvm.dbg.region.end ↵Devang Patel2009-02-101-3/+14
| | | | | | during inlining. llvm-svn: 64209
* Enable scalar replacement of AllocaInst whose one of the user is dbg info.Devang Patel2009-02-101-0/+22
| | | | llvm-svn: 64207
* Revert rev. 63876. It is causing llvm-gcc bootstrap failure.Devang Patel2009-02-052-17/+14
| | | | llvm-svn: 63888
* Ignore dbg intrinsics while propagating conditional expression info.Devang Patel2009-02-052-14/+17
| | | | llvm-svn: 63876
* Ignore dbg intrinsics while folding switch instruction.Devang Patel2009-02-051-8/+19
| | | | llvm-svn: 63802
* Ignore dbg intrinsics.Devang Patel2009-02-041-7/+29
| | | | llvm-svn: 63781
* While folding vallue comparison terminators ignore dbg intrinsics.Devang Patel2009-02-041-0/+3
| | | | llvm-svn: 63700
* Ignore dbg intrinsics while hoisting common code in the two blocks up into ↵Devang Patel2009-02-041-3/+14
| | | | | | the branch block. llvm-svn: 63687
* Do not let dbg intrinsic block folding of two entry phi node.Devang Patel2009-02-031-2/+3
| | | | llvm-svn: 63671
* Revert r63600. It didn't fix the bug, it just moved it a bit.Nick Lewycky2009-02-031-7/+2
| | | | llvm-svn: 63618
* Update the callgraph when replacing InvokeInst with CallInst when inlining.Nick Lewycky2009-02-031-3/+8
| | | | llvm-svn: 63600
* use precise gettersGabor Greif2009-01-301-2/+2
| | | | llvm-svn: 63402
* Rename getAnalysisToUpdate to getAnalysisIfAvailable.Duncan Sands2009-01-284-14/+14
| | | | llvm-svn: 63198
* Revert previous change; even this mild and clearlyDale Johannesen2009-01-241-7/+4
| | | | | | | more accurate change loses more than it gains on benchmarks. llvm-svn: 62938
* Improve the inlining cost function a bit.Dale Johannesen2009-01-241-3/+6
| | | | | | Little practical effect. llvm-svn: 62908
* Simplify the logic of getting hold of a PHI predecessor block.Gabor Greif2009-01-231-4/+2
| | | | | | | | | There is now a direct way from value-use-iterator to incoming block in PHINode's API. This way we avoid the iterator->index->iterator trip, and especially the costly getOperandNo() invocation. Additionally there is now an assertion that the iterator really refers to one of the PHI's Uses. llvm-svn: 62869
* another fix for PR3354Chris Lattner2009-01-201-0/+5
| | | | llvm-svn: 62561
* Doxygen-ify comments.Bill Wendling2009-01-191-45/+43
| | | | llvm-svn: 62546
OpenPOWER on IntegriCloud