41 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt -passes=gvn -S %s | FileCheck %s3 4%MyStruct = type { i32, i32 }5 6define i8 @foo(i64 %in, ptr %arr, i1 %arg) {7; CHECK-LABEL: define i8 @foo(8; CHECK-SAME: i64 [[IN:%.*]], ptr [[ARR:%.*]], i1 [[ARG:%.*]]) {9; CHECK-NEXT: [[ADDR:%.*]] = alloca [[MYSTRUCT:%.*]], align 810; CHECK-NEXT: [[DEAD:%.*]] = trunc i64 [[IN]] to i3211; CHECK-NEXT: br i1 [[ARG]], label %[[NEXT:.*]], label %[[TMP:.*]]12; CHECK: [[TMP]]:13; CHECK-NEXT: call void @bar()14; CHECK-NEXT: br label %[[NEXT]]15; CHECK: [[NEXT]]:16; CHECK-NEXT: store i64 [[IN]], ptr [[ADDR]], align 417; CHECK-NEXT: [[RESPTR:%.*]] = getelementptr i8, ptr [[ARR]], i32 [[DEAD]]18; CHECK-NEXT: [[RES:%.*]] = load i8, ptr [[RESPTR]], align 119; CHECK-NEXT: ret i8 [[RES]]20;21 %addr = alloca %MyStruct22 %dead = trunc i64 %in to i3223 br i1 %arg, label %next, label %tmp24 25tmp:26 call void @bar()27 br label %next28 29next:30 store i64 %in, ptr %addr31 br label %final32 33final:34 %idx32 = load i32, ptr %addr35 %resptr = getelementptr i8, ptr %arr, i32 %idx3236 %res = load i8, ptr %resptr37 ret i8 %res38}39 40declare void @bar()41