1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -passes=instcombine,simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s 3 4; instcombine should sort the PHI operands so that simplifycfg can see the 5; duplicate and remove it. 6 7define i32 @foo(i1 %t) { 8; CHECK-LABEL: @foo( 9; CHECK-NEXT: entry: 10; CHECK-NEXT: call void @bar() 11; CHECK-NEXT: br i1 [[T:%.*]], label [[TRUE:%.*]], label [[FALSE:%.*]] 12; CHECK: true: 13; CHECK-NEXT: call void @bar() 14; CHECK-NEXT: br label [[FALSE]] 15; CHECK: false: 16; CHECK-NEXT: [[A:%.*]] = phi i32 [ 4, [[TRUE]] ], [ 10, [[ENTRY:%.*]] ] 17; CHECK-NEXT: call void @bar() 18; CHECK-NEXT: ret i32 [[A]] 19; 20entry: 21 call void @bar() 22 br i1 %t, label %true, label %false 23true: 24 call void @bar() 25 br label %false 26false: 27 %a = phi i32 [ 2, %true ], [ 5, %entry ] 28 %b = phi i32 [ 5, %entry ], [ 2, %true ] 29 call void @bar() 30 %c = add i32 %a, %b 31 ret i32 %c 32} 33 34declare void @bar() 35