| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 |
| ; RUN: opt -S -passes=ipsccp < %s | FileCheck %s |
| |
| define void @caller() { |
| ; CHECK-LABEL: define void @caller() { |
| ; CHECK-NEXT: entry: |
| ; CHECK-NEXT: [[CALL:%.*]] = call i32 @f2(i8 0, i8 0) |
| ; CHECK-NEXT: ret void |
| ; |
| entry: |
| %call = call i32 @f2(i8 0, i8 0) |
| ret void |
| } |
| |
| define internal i32 @f2(i8 %a0, i8 %a1) { |
| ; CHECK-LABEL: define internal i32 @f2( |
| ; CHECK-SAME: i8 range(i8 -9, 1) [[A0:%.*]], i8 range(i8 -9, 1) [[A1:%.*]]) { |
| ; CHECK-NEXT: entry: |
| ; CHECK-NEXT: [[CMP_NOT_NOT:%.*]] = icmp eq i8 [[A0]], -9 |
| ; CHECK-NEXT: br i1 [[CMP_NOT_NOT]], label [[COMMON_RET1:%.*]], label [[IF_THEN3:%.*]] |
| ; CHECK: common.ret1: |
| ; CHECK-NEXT: ret i32 poison |
| ; CHECK: if.then3: |
| ; CHECK-NEXT: [[CALL:%.*]] = call i32 @f2(i8 [[A1]], i8 -9) |
| ; CHECK-NEXT: ret i32 poison |
| ; |
| entry: |
| %cmp.not.not = icmp eq i8 %a0, -9 |
| br i1 %cmp.not.not, label %common.ret1, label %if.then3 |
| |
| common.ret1: ; preds = %entry |
| ret i32 0 |
| |
| if.then3: ; preds = %entry |
| %call = call i32 @f2(i8 %a1, i8 -9) |
| ret i32 %call |
| } |