aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms
AgeCommit message (Collapse)Author
2006-08-18Fix a grammaro in a comment.Reid Spencer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29765 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-14Handle single-entry PHI nodes correctly. This fixes PR877 andChris Lattner
Transforms/CondProp/2006-08-14-SingleEntryPhiCrash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29673 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-12Don't attempt to split subloops out of a loop with a huge number of backedges.Chris Lattner
Not only will this take huge amounts of compile time, the resultant loop nests won't be useful for optimization. This reduces loopsimplify time on Transforms/LoopSimplify/2006-08-11-LoopSimplifyLongTime.ll from ~32s to ~0.4s with a debug build of llvm on a 2.7Ghz G5. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29647 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-12Reimplement the loopsimplify code which deletes edges from unreachableChris Lattner
blocks that target loop blocks. Before, the code was run once per loop, and depended on the number of predecessors each block in the loop had. Unfortunately, scanning preds can be really slow when huge numbers of phis exist or when phis with huge numbers of inputs exist. Now, the code is run once per function and scans successors instead of preds, which is far faster. In addition, the new code is simpler and is goto free, woo. This change speeds up a nasty testcase Duraid provided me from taking hours to taking ~72s with a debug build. The functionality this implements is already tested in the testsuite as Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29644 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-07Make this example pass use some things from lib/Support (EscapeString,Reid Spencer
SlowOperatingInfo, Statistics). Besides providing an example of how to use these facilities, it also serves to debug problems with runtime linking when dlopening a loadable module. These three support facilities exercise different combinations of Text/Weak Weak/Text and Text/Text linking between the executable and the module. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29552 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-07For PR780:Reid Spencer
1. Change the usage of LOADABLE_MODULE so that it implies all the things necessary to make a loadable module. This reduces the user's burdern to get a loadable module correctly built. 2. Document the usage of LOADABLE_MODULE in the MakefileGuide 3. Adjust the makefile for lib/Transforms/Hello to use the new specification for building loadable modules 4. Adjust the sample project to not attempt to build a shared library for its little library. This was just wasteful and not instructive at all. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29551 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-03Fix PR867 (and maybe 868) and testcsae:Chris Lattner
Transforms/SimplifyCFG/2006-08-03-Crash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29515 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-03Changes:Chris Lattner
1. Update an obsolete comment. 2. Make the sorting by base an explicit (though still N^2) step, so that the code is more clear on what it is doing. 3. Partition uses so that uses inside the loop are handled before uses outside the loop. Note that none of these changes currently changes the code inserted by LSR, but they are a stepping stone to getting there. This code is the result of some crazy pair programming with Nate. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29493 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-02Add special check to avoid isLoop call. Simple, but doesn't seem to speedChris Lattner
up lcssa much in practice. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29465 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-02Replace the SSA update code in LCSSA with a bottom-up approach instead of a topChris Lattner
down approach, inspired by discussions with Tanya. This approach is significantly faster, because it does not need dominator frontiers and it does not insert extraneous unused PHI nodes. For example, on 252.eon, in a release-asserts build, this speeds up LCSSA (which is the slowest pass in gccas) from 9.14s to 0.74s on my G5. This code is also slightly smaller and significantly simpler than the old code. Amusingly, in a normal Release build (which includes the "assert(L->isLCSSAForm());" assertion), asserting that the result of LCSSA is in LCSSA form is actually slower than the LCSSA transformation pass itself on 252.eon. I will see if Loop::isLCSSAForm can be sped up next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29463 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-20Minor comment tweaksChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29226 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-20Make it fit into 80 cols.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29223 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-20Add new constructor to accept vector of exported names while creatingDevang Patel
InternalizePass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29222 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-19Add an assertion.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29199 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-19Make LoopUnroll not die on LCSSA Phis. This makes lencod work again.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29198 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-19Fix a error that hadn't yet cause any problems, but I'm sure it would haveOwen Anderson
somewhere down the road. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29197 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-18silence warnings in a release buildChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29189 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-18Only reuse a previous IV if it would not require a type conversion.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29186 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-14eliminate some ugly code, using ConstantExpr::getWithOperands instead.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29149 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-14Hopefully the final attempt at making IndVars preserve LCSSA.Owen Anderson
This should fix PR 831. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29141 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-13Revert this patch temporarily until PR831 is fixed.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29134 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-12Handle instructions in the map, but that map to a null pointer.Chris Lattner
This unbreaks smg2000. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29127 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-12IndVars now (correctly) preserves LCSSA form.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29126 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-12In addition to deleting calls, the inliner can constant fold them as well.Chris Lattner
Handle this case, which doesn't require a new callgraph edge. This fixes a crash compiling MallocBench/gs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29121 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-12Change the callgraph representation to store the callsite along with theChris Lattner
target CG node. This allows the inliner to properly update the callgraph when using the pruning inliner. The pruning inliner may not copy over all call sites from a callee to a caller, so the edges corresponding to those call sites should not be copied over either. This fixes PR827 and Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29120 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-11Silence a warning produced in assertions-disabled modeChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29108 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-11Revert my indvars changes because they were breaking things. Unfortunately thisOwen Anderson
didn't start showing up until after the recent instcombine fixes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29102 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-10Add a comment, and fix a typo that broke the build.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29094 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-10Don't indent the entire function.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29093 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-10Recognize 16-bit bswaps by relaxing overconstrained pattern.Chris Lattner
This implements Transforms/InstCombine/bswap.ll:test[34]. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29087 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-10Make instcombine not remove Phi nodes when LCSSA is live.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29083 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-09Fix typo in the comment.Owen Anderson
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29078 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-09Add a fix for an issue where LCSSA would fail to insert undef's in some cornerOwen Anderson
cases. Ideally, this issue will go away in the future as LCSSA gets smarter about which Phi nodes it inserts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29076 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-07Fix PR820 and Transforms/GlobalOpt/2006-07-07-InlineAsmCrash.llChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29071 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-28Use hidden visibility to make symbols in an anonymous namespace getChris Lattner
dropped. This shrinks libllvmgcc.dylib another 67K git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28975 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-28Shrink libllvmgcc.dylib by another 23KChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28972 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-28Switch to a very conservative heuristic for determining when loop-unswitchingOwen Anderson
will be profitable. This is mainly to remove some cases where excessive unswitching would result in long compile times and/or huge generated code. Once someone comes up with a better heuristic that avoids these cases, this should be switched out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28962 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-28Fix Transforms/InstCombine/2006-06-28-infloop.llChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28961 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-28Don't unswitch really large loops even if they are mostly filled with emptyChris Lattner
blocks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28959 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-28Catch more function pointer casting problemsAndrew Lenharth
Remove the Function pointer cast in these calls, converting it to a cast of argument. %tmp60 = tail call int cast (int (ulong)* %str to int (int)*)( int 10 ) %tmp60 = tail call int cast (int (ulong)* %str to int (int)*)( uint %tmp51 ) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28953 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-27Fix for 2006-06-27-DeadSwitchCase.llOwen Anderson
Be more careful when updating Phi nodes after eliminating dead switch cases. Fix proposed by Chris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28947 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-27Fix Transforms/DeadArgElim/2006-06-27-struct-ret.ll. -deadargelim should notChris Lattner
remove the struct return argument of a csret function, even if it is obviously dead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28943 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-27De-pessimize the handling of LCSSA Phi nodes in IndVarSimplify. Hopefully thisOwen Anderson
will make Shootout-C/nestedloop faster. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28924 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-26random code cleanups, no functionality changeChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28914 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-26Make LoopUnswitch able to unswitch loops with live-out values by taking ↵Owen Anderson
advantage of LCSSA. This results several times the number of unswitchings occurring on tests such and timberwolfmc, unix-tbl, and ldecod. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28912 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-17Fix IndVarsSimplify/2006-06-16-Indvar-LCSSA-Crash.ll, a case where aChris Lattner
"LCSSA" phi node causes indvars to break dominance properties. This fixes causes indvars to avoid inserting aggressive code in this case, instead indvars should be fixed to be more aggressive in the face of lcssa phi's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28850 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-16Add missing casts. This fixed some regressions.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28834 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-16More libcall transformations:Evan Cheng
printf("%s\n", str) -> puts(str) printf("%c", c) -> putchar(c) Also fixed fprintf(file, "%c", c) -> fputc(c, file) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28815 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-16Simplify fprintf(file, "%s", str) to fputs(str, file).Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28814 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-15Implement Transforms/InstCombine/bswap.ll, turning common shift/and/or bswapChris Lattner
idioms into bswap intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28803 91177308-0d34-0410-b5e6-96231b3b80d8