brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 0af8ad2 Raw
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