aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms
AgeCommit message (Collapse)Author
2009-11-03fix an IPSCCP bug I introduced when I changed IPSCCP to start working on Chris Lattner
functions that don't have local linkage. Basically, we need to be more careful about propagating argument information to functions whose results we aren't tracking. This fixes a miscompilation of LLVMCConfigurationEmitter.cpp when built with an llvm-gcc that has ipsccp enabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85923 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03fix a subtle bug I introduced when refactoring SCCP. TestcaseChris Lattner
to follow. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85903 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Eliminate some temporaries.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85896 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03remove a isFreeCall check: it is a callinst that can write to memory already.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85863 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03Alphabetize.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85859 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-03turn IPSCCP back on now that the iterator invalidation bug is fixed.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85858 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02fix a nasty iterator invalidation bug from my conversion fromChris Lattner
std::map to DenseMap, exposed on release llvm-gcc bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85840 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02revert r8579[56], which are causing unhappiness in buildbot land.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85818 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02disable IPSCCP support for multiple return values, it is buggy, so justChris Lattner
disable it until I can fix it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85810 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02improve IPSCCP to be able to propagate the result of "!mayBeOverridden"Chris Lattner
function to calls of that function, regardless of whether it has local linkage or has its address taken. Not escaping should only affect whether we make an aggressive assumption about the arguments to a function, not whether we can track the result of it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85795 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02don't mark the arguments of prototype overdefined, they will never be queried.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85793 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02restore some code I removed in r85788, refactor it intoChris Lattner
a shared place instead of duplicating it 4 times. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85792 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02remove some confused code that dates from when we hadChris Lattner
"multiple return values" but not "first class aggregates" git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85791 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02avoid redundant lookups in BBExecutable, and make it a SmallPtrSet.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85790 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02Use the libanalysis 'ConstantFoldLoadFromConstPtr' functionChris Lattner
instead of reinventing SCCP-specific logic. This gives us new powers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85789 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02switch the main 'ValueState' map from being an std::map to beingChris Lattner
a DenseMap. Doing this required being aware of subtle iterator invalidation issues, but it provides a big speedup. In a release-asserts build, this sped up optimizing 403.gcc from 1.34s -> 0.79s (IPSCCP) and 1.11s -> 0.44s (SCCP). This commit also conflates in a bunch of general cleanups, sorry. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85788 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02fix a bug exposed by moving SRoA earlier which caused a crash building kc++Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85786 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02only IPSCCP incoming arguments if the function is executable, this fixesChris Lattner
an assertion on the buildbot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85784 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02add a new ValueState::getConstantInt() helper, use it to Chris Lattner
simplify some code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85783 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02tidy up some more: remove some extraneous inline specifiers, return harder.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85780 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02eliminate the SCCPSolver::getValueMapping method.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85778 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02fix failures introduced in r85774Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85777 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02factor duplicated code into a new DeleteInstructionInBlockChris Lattner
function, eliminate temporary (and pointless) smallvector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85776 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02Chris used to use '...' instead of proper grammar.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85775 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02remove some extraneous llvmcontext stuff.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85774 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02change LatticeVal to use PointerIntPair to save some space.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85773 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-02fix instcombine to only do store sinking when the alignmentsChris Lattner
of the two loads agree. Propagate that onto the new store. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85772 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01when merging two loads, make sure to take the min of their alignment,Chris Lattner
not the max. This didn't matter until the previous patch because instcombine would refuse to sink loads with differenting alignments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85738 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01split load sinking out to its own function, like gep sinking.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85737 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01fix a bug noticed by inspection: when instcombine sinks loads throughChris Lattner
phis, it didn't preserve the alignment of the load. This is a missed optimization of the alignment is high and a miscompilation when the alignment is low. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85736 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01cleanups, switch GlobalDCE to SmallPtrSet instead of std::setChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85730 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01remove a bunch of locking from LLVMContextImpl. Since only one threadChris Lattner
can be banging on a context at a time, this isn't needed. Owen, please review. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85728 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01improve comment.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85725 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01Reverting 85714, 85715, 85716, which are breaking the buildDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85717 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01Remove the #include of Pass.h from PassManager.h. This breaks a significantDan Gohman
#include dependency, as frontends commonly pull in PassManager.h. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85714 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01teach ipsccp and ipconstprop that a blockaddress doesn't 'take the address' ↵Chris Lattner
of a function in a way that should prevent ip constprop. This allows clang/test/CodeGen/indirect-goto.c to pass with the new indirect goto lowering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85709 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01change llvm::MergeBlockIntoPredecessor to not merge two blocks BB1->BB2 Chris Lattner
when BB2 has its address taken. Since it ends up doing BB2->rauw(BB1), this can cause the address of the entry block to be taken. Since it is generally undesirable to nuke blocks whose address is taken, even when we can, just unconditionally stop this xform. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85708 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01strengthen an assumption: RevectorBlockTo knows that PredBB Chris Lattner
ended in an uncond branch because the pass requires BreakCriticalEdges. However, BCE doesn't eliminate critical adges from indbrs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85707 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01if CostMetrics says to never duplicate some code, don't unswitch a loop.Chris Lattner
This prevents unswitching from duplicating indbr's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85705 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01constant fold indirectbr(blockaddress(%bb)) -> br label %bb.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85704 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-01Revert 85678/85680. The decision is to stay with the current form of Chris Lattner
indirectbr, thus we don't need "blockaddr(@func, null)". Eliminate it for simplicity. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85699 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31Make sure PRE doesn't split crit edges from indirectbr.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85692 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31llvm::SplitEdge should refuse to split an edge from an indirectbr.Chris Lattner
Fix CodeGenPrepare to not try to split edges from indirectbr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85690 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31update the comment above llvm::SplitCriticalEdge, and makeChris Lattner
it abort on IndirectBrInst as describe in the comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85688 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31adjust a couple xforms to work with null bb's in BlockAddress.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85680 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31add a comment.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85671 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31Revert r85667. LoopUnroll currently can't call utility functions whichDan Gohman
auto-update the DominatorTree because it doesn't keep the DominatorTree current while it works. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85670 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31Remove redundant code.Dan Gohman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85668 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31Merge the enhancements from LoopUnroll's FoldBlockIntoPredecessor intoDan Gohman
MergeBlockIntoPredecessor. This makes SimplifyCFG slightly more aggressive, and makes it unnecessary for LoopUnroll to have its own copy of this code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85667 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-31Rename forgetLoopBackedgeTakenCount to forgetLoop, because itDan Gohman
clears out more information than just the stored backedge taken count. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85664 91177308-0d34-0410-b5e6-96231b3b80d8