diff --git a/llvm/test/Transforms/InstCombine/2004-09-20-BadLoadCombine2.ll b/llvm/test/Transforms/InstCombine/2004-09-20-BadLoadCombine2.ll index f558e35ebe015..1d89dd6195032 100644 --- a/llvm/test/Transforms/InstCombine/2004-09-20-BadLoadCombine2.ll +++ b/llvm/test/Transforms/InstCombine/2004-09-20-BadLoadCombine2.ll @@ -1,25 +1,35 @@ -; RUN: opt < %s -passes=instcombine,mem2reg,simplifycfg -simplifycfg-require-and-preserve-domtree=1 | \ -; RUN: llvm-dis | grep -v store | not grep "i32 1" +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 +; RUN: opt %s -passes=instcombine,mem2reg,simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -o - | FileCheck %s ; Test to make sure that instcombine does not accidentally propagate the load ; into the PHI, which would break the program. define i32 @test(i1 %C) { +; CHECK-LABEL: define i32 @test( +; CHECK-SAME: i1 [[C:%.*]]) { +; CHECK-NEXT: [[ENTRY:.*:]] +; CHECK-NEXT: [[X:%.*]] = alloca i32, align 4 +; CHECK-NEXT: [[X2:%.*]] = alloca i32, align 4 +; CHECK-NEXT: store i32 1, ptr [[X]], align 4 +; CHECK-NEXT: store i32 2, ptr [[X2]], align 4 +; CHECK-NEXT: [[SPEC_SELECT:%.*]] = select i1 [[C]], ptr [[X]], ptr [[X2]] +; CHECK-NEXT: store i32 3, ptr [[X]], align 4 +; CHECK-NEXT: [[TMP_3:%.*]] = load i32, ptr [[SPEC_SELECT]], align 4 +; CHECK-NEXT: ret i32 [[TMP_3]] +; entry: - %X = alloca i32 ; [#uses=3] - %X2 = alloca i32 ; [#uses=2] - store i32 1, ptr %X - store i32 2, ptr %X2 - br i1 %C, label %cond_true.i, label %cond_continue.i + %X = alloca i32 ; [#uses=3] + %X2 = alloca i32 ; [#uses=2] + store i32 1, ptr %X + store i32 2, ptr %X2 + br i1 %C, label %cond_true.i, label %cond_continue.i cond_true.i: ; preds = %entry - br label %cond_continue.i + br label %cond_continue.i cond_continue.i: ; preds = %cond_true.i, %entry - %mem_tmp.i.0 = phi ptr [ %X, %cond_true.i ], [ %X2, %entry ] ; [#uses=1] - store i32 3, ptr %X - %tmp.3 = load i32, ptr %mem_tmp.i.0 ; [#uses=1] - ret i32 %tmp.3 + %mem_tmp.i.0 = phi ptr [ %X, %cond_true.i ], [ %X2, %entry ] ; [#uses=1] + store i32 3, ptr %X + %tmp.3 = load i32, ptr %mem_tmp.i.0 ; [#uses=1] + ret i32 %tmp.3 } - - diff --git a/llvm/utils/profcheck-xfail.txt b/llvm/utils/profcheck-xfail.txt index e1ee7c3664a51..9d170b392b6c7 100644 --- a/llvm/utils/profcheck-xfail.txt +++ b/llvm/utils/profcheck-xfail.txt @@ -830,7 +830,6 @@ Transforms/IndVarSimplify/invalidate-modified-lcssa-phi.ll Transforms/IndVarSimplify/pr45835.ll Transforms/IndVarSimplify/preserving-debugloc-rem-div.ll Transforms/Inline/optimization-remarks-hotness-threshold.ll -Transforms/InstCombine/2004-09-20-BadLoadCombine2.ll Transforms/InstCombine/2004-09-20-BadLoadCombine.ll Transforms/InstCombine/2005-04-07-UDivSelectCrash.ll Transforms/InstCombine/2011-02-14-InfLoop.ll