68 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -S -passes=inline | FileCheck %s3 4define i32 @callee([2 x i32] %agg) {5; CHECK-LABEL: define i32 @callee(6; CHECK-SAME: [2 x i32] [[AGG:%.*]]) {7; CHECK-NEXT: [[V:%.*]] = extractvalue [2 x i32] [[AGG]], 08; CHECK-NEXT: [[C:%.*]] = icmp eq i32 [[V]], 09; CHECK-NEXT: br i1 [[C]], label %[[IS_NULL:.*]], label %[[NON_NULL:.*]]10; CHECK: [[IS_NULL]]:11; CHECK-NEXT: ret i32 012; CHECK: [[NON_NULL]]:13; CHECK-NEXT: [[R:%.*]] = call i32 @callee([2 x i32] [[AGG]])14; CHECK-NEXT: ret i32 [[R]]15;16 %v = extractvalue [2 x i32] %agg, 017 %c = icmp eq i32 %v, 018 br i1 %c, label %is_null, label %non_null19 20is_null:21 ret i32 022 23non_null:24 %r = call i32 @callee([2 x i32] %agg)25 ret i32 %r26}27 28define i32 @caller_simplified(i32 %arg) {29; CHECK-LABEL: define i32 @caller_simplified(30; CHECK-SAME: i32 [[ARG:%.*]]) {31; CHECK-NEXT: [[AGG0:%.*]] = insertvalue [2 x i32] poison, i32 0, 032; CHECK-NEXT: [[AGG1:%.*]] = insertvalue [2 x i32] [[AGG0]], i32 [[ARG]], 133; CHECK-NEXT: ret i32 034;35 %agg0 = insertvalue [2 x i32] poison, i32 0, 036 %agg1 = insertvalue [2 x i32] %agg0, i32 %arg, 137 %v = call i32 @callee([2 x i32] %agg1)38 ret i32 %v39}40 41define i32 @caller_not_simplified(i32 %arg) {42; CHECK-LABEL: define i32 @caller_not_simplified(43; CHECK-SAME: i32 [[ARG:%.*]]) {44; CHECK-NEXT: [[AGG0:%.*]] = insertvalue [2 x i32] poison, i32 1, 045; CHECK-NEXT: [[AGG1:%.*]] = insertvalue [2 x i32] [[AGG0]], i32 [[ARG]], 146; CHECK-NEXT: [[V:%.*]] = call i32 @callee([2 x i32] [[AGG1]])47; CHECK-NEXT: ret i32 [[V]]48;49 %agg0 = insertvalue [2 x i32] poison, i32 1, 050 %agg1 = insertvalue [2 x i32] %agg0, i32 %arg, 151 %v = call i32 @callee([2 x i32] %agg1)52 ret i32 %v53}54 55define i32 @caller_not_simplified2(i32 %arg) {56; CHECK-LABEL: define i32 @caller_not_simplified2(57; CHECK-SAME: i32 [[ARG:%.*]]) {58; CHECK-NEXT: [[AGG0:%.*]] = insertvalue [2 x i32] poison, i32 0, 159; CHECK-NEXT: [[AGG1:%.*]] = insertvalue [2 x i32] [[AGG0]], i32 [[ARG]], 060; CHECK-NEXT: [[V:%.*]] = call i32 @callee([2 x i32] [[AGG1]])61; CHECK-NEXT: ret i32 [[V]]62;63 %agg0 = insertvalue [2 x i32] poison, i32 0, 164 %agg1 = insertvalue [2 x i32] %agg0, i32 %arg, 065 %v = call i32 @callee([2 x i32] %agg1)66 ret i32 %v67}68