diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp --- a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp @@ -537,7 +537,7 @@ if (!isa(OOp) || (OOpIsAPInt && isSelect01(C->getUniqueInteger(), *OOpC))) { Value *NewSel = Builder.CreateSelect(SI.getCondition(), Swapped ? C : OOp, - Swapped ? OOp : C); + Swapped ? OOp : C, "", &SI); if (isa(&SI)) cast(NewSel)->setFastMathFlags(FMF); NewSel->takeName(TVI); diff --git a/llvm/test/Transforms/InstCombine/unpredictable-select.ll b/llvm/test/Transforms/InstCombine/unpredictable-select.ll --- a/llvm/test/Transforms/InstCombine/unpredictable-select.ll +++ b/llvm/test/Transforms/InstCombine/unpredictable-select.ll @@ -3,7 +3,7 @@ define i64 @add_select(i1 %cond, i64 %x, i64 %y) { ; CHECK-LABEL: @add_select( -; CHECK-NEXT: [[ADD:%.*]] = select i1 [[COND:%.*]], i64 [[Y:%.*]], i64 0 +; CHECK-NEXT: [[ADD:%.*]] = select i1 [[COND:%.*]], i64 [[Y:%.*]], i64 0, !unpredictable [[META0:![0-9]+]] ; CHECK-NEXT: [[RET:%.*]] = add i64 [[ADD]], [[X:%.*]] ; CHECK-NEXT: ret i64 [[RET]] ;