; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -passes=ipsccp,instcombine -S | FileCheck %s define internal i32 @foo(i1 %C) { ; CHECK-LABEL: @foo( ; CHECK-NEXT: br i1 [[C:%.*]], label [[T:%.*]], label [[F:%.*]] ; CHECK: T: ; CHECK-NEXT: ret i32 undef ; CHECK: F: ; CHECK-NEXT: ret i32 undef ; br i1 %C, label %T, label %F T: ; preds = %0 ret i32 52 F: ; preds = %0 ret i32 52 } define i1 @caller(i1 %C) { ; CHECK-LABEL: @caller( ; CHECK-NEXT: [[X:%.*]] = call i32 @foo(i1 [[C:%.*]]) ; CHECK-NEXT: ret i1 true ; %X = call i32 @foo( i1 %C ) ; [#uses=1] %Y = icmp ne i32 %X, 0 ; [#uses=1] ret i1 %Y } define i1 @invokecaller(i1 %C) personality ptr @__gxx_personality_v0 { ; CHECK-LABEL: @invokecaller( ; CHECK-NEXT: [[X:%.*]] = invoke i32 @foo(i1 [[C:%.*]]) ; CHECK-NEXT: to label [[OK:%.*]] unwind label [[FAIL:%.*]] ; CHECK: OK: ; CHECK-NEXT: ret i1 true ; CHECK: FAIL: ; CHECK-NEXT: [[EXN:%.*]] = landingpad { ptr, i32 } ; CHECK-NEXT: cleanup ; CHECK-NEXT: ret i1 false ; %X = invoke i32 @foo( i1 %C ) to label %OK unwind label %FAIL ; [#uses=1] OK: %Y = icmp ne i32 %X, 0 ; [#uses=1] ret i1 %Y FAIL: %exn = landingpad {ptr, i32} cleanup ret i1 false } declare i32 @__gxx_personality_v0(...)