Author: lattner Date: Mon Dec 24 13:32:55 2007 New Revision: 45344 URL: http://llvm.org/viewvc/llvm-project?rev=45344&view=rev Log: add a -backedge-hack llc-beta option to codegenprepare. When specified, don't split backedges of single-bb loops. This helps address PR1877
Modified: llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp Modified: llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp?rev=45344&r1=45343&r2=45344&view=diff ============================================================================== --- llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp (original) +++ llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp Mon Dec 24 13:32:55 2007 @@ -37,6 +37,8 @@ namespace { cl::opt<bool> OptExtUses("optimize-ext-uses", cl::init(true), cl::Hidden); + // LLCBETA option. + cl::opt<bool> DontHackBackedge("backedge-hack", cl::Hidden); } namespace { @@ -264,7 +266,7 @@ } -/// SplitEdgeNicely - Split the critical edge from TI to it's specified +/// SplitEdgeNicely - Split the critical edge from TI to its specified /// successor if it will improve codegen. We only do this if the successor has /// phi nodes (otherwise critical edges are ok). If there is already another /// predecessor of the succ that is empty (and thus has no phi nodes), use it @@ -275,9 +277,15 @@ assert(isa<PHINode>(Dest->begin()) && "This should only be called if Dest has a PHI!"); + // As a hack, never split backedges of loops. Even though the copy for any + // PHIs inserted on the backedge would be dead for exits from the loop, we + // assume that the cost of *splitting* the backedge would be too high. + if (DontHackBackedge && Dest == TIBB) + return; + /// TIPHIValues - This array is lazily computed to determine the values of /// PHIs in Dest that TI would provide. - std::vector<Value*> TIPHIValues; + SmallVector<Value*, 32> TIPHIValues; // Check to see if Dest has any blocks that can be used as a split edge for // this terminator. _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits