From cb056de508c4938304b3a5a75e77eee19f6f98d1 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 29 Jun 2001 23:56:23 +0000 Subject: Added documentation. Constant fold terminators. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/SCCP.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/Transforms/Scalar/SCCP.cpp b/lib/Transforms/Scalar/SCCP.cpp index ba271b4e26..7273aec3f4 100644 --- a/lib/Transforms/Scalar/SCCP.cpp +++ b/lib/Transforms/Scalar/SCCP.cpp @@ -165,10 +165,19 @@ private: BBWorkList.push_back(BB); // Add the block to the work list! } - void OperandChangedState(User *U); + + // UpdateInstruction - Something changed in this instruction... Either an + // operand made a transition, or the instruction is newly executable. Change + // the value type of I to reflect these changes if appropriate. + // void UpdateInstruction(Instruction *I); -}; + // OperandChangedState - This method is invoked on all of the users of an + // instruction that was just changed state somehow.... Based on this + // information, we need to update the specified user of this instruction. + // + void OperandChangedState(User *U); +}; //===----------------------------------------------------------------------===// @@ -259,9 +268,12 @@ bool SCCP::doSCCP() { // Hey, we just changed something! MadeChanges = true; - } else { - ++II; + continue; // Skip the ++II at the end of the loop here... + } else if (Inst->isTerminator()) { + MadeChanges |= ConstantFoldTerminator((TerminatorInst*)Inst); } + + ++II; } // Merge identical constants last: this is important because we may have just @@ -491,7 +503,6 @@ void SCCP::OperandChangedState(User *U) { } - // DoSparseConditionalConstantProp - Use Sparse Conditional Constant Propogation // to prove whether a value is constant and whether blocks are used. // -- cgit v1.2.3