diff --git a/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp b/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp index da700f18cdaf..f74f28abf85a 100644 --- a/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp +++ b/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp @@ -1538,17 +1538,6 @@ static bool tryToReplaceWithConstant(SCCPSolver &Solver, Value *V) { return true; } -static bool tryToReplaceInstWithConstant(SCCPSolver &Solver, Instruction *Inst, - bool shouldEraseFromParent) { - if (!tryToReplaceWithConstant(Solver, Inst)) - return false; - - // Delete the instruction. - if (shouldEraseFromParent) - Inst->eraseFromParent(); - return true; -} - // runSCCP() - Run the Sparse Conditional Constant Propagation algorithm, // and return true if the function was modified. // @@ -1597,8 +1586,9 @@ static bool runSCCP(Function &F, const DataLayout &DL, if (Inst->getType()->isVoidTy() || isa(Inst)) continue; - if (tryToReplaceInstWithConstant(Solver, Inst, - true /* shouldEraseFromParent */)) { + if (tryToReplaceWithConstant(Solver, Inst)) { + if (isInstructionTriviallyDead(Inst)) + Inst->eraseFromParent(); // Hey, we just changed something! MadeChanges = true; ++NumInstRemoved; @@ -1789,10 +1779,9 @@ static bool runIPSCCP(Module &M, const DataLayout &DL, Instruction *Inst = &*BI++; if (Inst->getType()->isVoidTy()) continue; - if (tryToReplaceInstWithConstant( - Solver, Inst, - !isa(Inst) && - !isa(Inst) /* shouldEraseFromParent */)) { + if (tryToReplaceWithConstant(Solver, Inst)) { + if (!isa(Inst) && !isa(Inst)) + Inst->eraseFromParent(); // Hey, we just changed something! MadeChanges = true; ++IPNumInstRemoved; diff --git a/lib/clang/include/clang/Basic/Version.inc b/lib/clang/include/clang/Basic/Version.inc index 032cdb995c22..b090ac16c105 100644 --- a/lib/clang/include/clang/Basic/Version.inc +++ b/lib/clang/include/clang/Basic/Version.inc @@ -7,4 +7,4 @@ #define CLANG_VENDOR "FreeBSD " -#define SVN_REVISION "279477" +#define SVN_REVISION "279689"