From 10b250eb4db3bf2753f003fcd3eac7f023144fae Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 29 Jun 2001 23:56:23 +0000 Subject: [PATCH] Added documentation. Constant fold terminators. llvm-svn: 106 --- llvm/lib/Transforms/Scalar/SCCP.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/llvm/lib/Transforms/Scalar/SCCP.cpp b/llvm/lib/Transforms/Scalar/SCCP.cpp index ba271b4e26fe..7273aec3f4d7 100644 --- a/llvm/lib/Transforms/Scalar/SCCP.cpp +++ b/llvm/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); - void UpdateInstruction(Instruction *I); -}; + // 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. //