diff --git a/llvm/lib/Transforms/Utils/SCCPSolver.cpp b/llvm/lib/Transforms/Utils/SCCPSolver.cpp index 3cec437ea33d..09a83f1ea094 100644 --- a/llvm/lib/Transforms/Utils/SCCPSolver.cpp +++ b/llvm/lib/Transforms/Utils/SCCPSolver.cpp @@ -953,15 +953,15 @@ void SCCPInstVisitor::visitUnaryOperator(Instruction &I) { if (isOverdefined(IV)) return (void)markOverdefined(&I); + // If something is unknown/undef, wait for it to resolve. + if (V0State.isUnknownOrUndef()) + return; + if (isConstant(V0State)) if (Constant *C = ConstantFoldUnaryOpOperand(I.getOpcode(), getConstant(V0State), DL)) return (void)markConstant(IV, &I, C); - // If something is undef, wait for it to resolve. - if (!isOverdefined(V0State)) - return; - markOverdefined(&I); }