Index: lib/Transforms/InstCombine/InstructionCombining.cpp =================================================================== --- lib/Transforms/InstCombine/InstructionCombining.cpp +++ lib/Transforms/InstCombine/InstructionCombining.cpp @@ -2260,10 +2260,9 @@ // If the condition is irrelevant, remove the use so that other // transforms on the condition become more effective. - if (BI.isConditional() && - BI.getSuccessor(0) == BI.getSuccessor(1) && - !isa(BI.getCondition())) { - BI.setCondition(UndefValue::get(BI.getCondition()->getType())); + if (BI.isConditional() && !isa(BI.getCondition()) && + BI.getSuccessor(0) == BI.getSuccessor(1)) { + BI.setCondition(ConstantInt::getFalse(BI.getCondition()->getType())); return &BI; } Index: test/Transforms/InstCombine/branch.ll =================================================================== --- test/Transforms/InstCombine/branch.ll +++ test/Transforms/InstCombine/branch.ll @@ -1,10 +1,12 @@ +; Check that we fold the condition of branches of the +; form: br dest1, dest2, where dest1 == dest2. ; RUN: opt -instcombine -S < %s | FileCheck %s define i32 @test(i32 %x) { ; CHECK-LABEL: @test entry: ; CHECK-NOT: icmp -; CHECK: br i1 undef, +; CHECK: br i1 false %cmp = icmp ult i32 %x, 7 br i1 %cmp, label %merge, label %merge merge: Index: test/Transforms/InstCombine/pr33765.ll =================================================================== --- test/Transforms/InstCombine/pr33765.ll +++ test/Transforms/InstCombine/pr33765.ll @@ -6,7 +6,7 @@ define void @patatino(i8 %beth) { ; CHECK-LABEL: @patatino( ; CHECK-NEXT: [[CONV:%.*]] = zext i8 [[BETH:%.*]] to i32 -; CHECK-NEXT: br i1 undef, label [[IF_THEN9:%.*]], label [[IF_THEN9]] +; CHECK-NEXT: br i1 false, label [[IF_THEN9:%.*]], label [[IF_THEN9]] ; CHECK: if.then9: ; CHECK-NEXT: [[MUL:%.*]] = mul nuw nsw i32 [[CONV]], [[CONV]] ; CHECK-NEXT: [[TINKY:%.*]] = load i16, i16* @glob, align 2 Index: test/Transforms/InstCombine/select-cmp-br.ll =================================================================== --- test/Transforms/InstCombine/select-cmp-br.ll +++ test/Transforms/InstCombine/select-cmp-br.ll @@ -248,7 +248,7 @@ define i32 @test6(i32 %arg, i1 %arg1) { ; CHECK-LABEL: @test6( ; CHECK-NEXT: entry: -; CHECK-NEXT: br i1 undef, label [[BB:%.*]], label [[BB]] +; CHECK-NEXT: br i1 false, label [[BB:%.*]], label [[BB]] ; CHECK: bb: ; CHECK-NEXT: [[TMP:%.*]] = select i1 [[ARG1:%.*]], i32 [[ARG:%.*]], i32 0 ; CHECK-NEXT: ret i32 [[TMP]]