brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · df73cee Raw
114 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -O3 -S                   | FileCheck %s3; RUN: opt < %s -passes="default<O3>" -S | FileCheck %s4 5target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"6target triple = "x86_64-pc-linux-gnu"7 8%t0 = type { ptr, ptr }9%t1 = type { [16 x i32] }10%t2 = type { %t3, ptr }11%t3 = type { i8 }12 13define void @wibble(ptr %arg) personality ptr null {14; CHECK-LABEL: @wibble(15; CHECK-NEXT:  bb:16; CHECK-NEXT:    [[I10_3_I_PRE:%.*]] = load i8, ptr [[ARG:%.*]], align 117; CHECK-NEXT:    [[TMP0:%.*]] = or i8 [[I10_3_I_PRE]], 118; CHECK-NEXT:    [[I1_SROA_0_0_VEC_EXTRACT:%.*]] = zext i8 [[TMP0]] to i3219; CHECK-NEXT:    [[I4_I_I:%.*]] = add nuw nsw i32 [[I1_SROA_0_0_VEC_EXTRACT]], 120; CHECK-NEXT:    store i32 [[I4_I_I]], ptr [[ARG]], align 421; CHECK-NEXT:    ret void22;23bb:24  %i = alloca [0 x [0 x [0 x [0 x [0 x [0 x %t0]]]]]], i32 0, align 825  %i1 = alloca %t1, align 426  store ptr %arg, ptr %i, align 827  %i2 = getelementptr %t0, ptr %i, i64 0, i32 128  store ptr %i1, ptr %i2, align 829  br label %bb330 31bb3:                                              ; preds = %bb7, %bb32  %i4 = phi i32 [ 0, %bb ], [ %i8, %bb7 ]33  %i5 = icmp ult i32 %i4, 1634  br i1 %i5, label %bb7, label %bb635 36bb6:                                              ; preds = %bb337  call void @baz(ptr %i, ptr %arg)38  ret void39 40bb7:                                              ; preds = %bb341  call void @foo(ptr %i, i32 %i4)42  %i8 = add i32 %i4, 143  br label %bb344}45 46define linkonce_odr ptr @hoge(ptr %arg, i64 %arg1) {47bb:48  %i = call ptr @ham(ptr %arg, i64 %arg1)49  ret ptr %i50}51 52define linkonce_odr void @foo(ptr %arg, i32 %arg1) {53bb:54  %i = load ptr, ptr %arg, align 855  br label %bb256 57bb2:                                              ; preds = %bb6, %bb58  %i3 = phi i32 [ 3, %bb ], [ %i17, %bb6 ]59  %i4 = icmp sgt i32 %i3, -160  br i1 %i4, label %bb6, label %bb561 62bb5:                                              ; preds = %bb263  ret void64 65bb6:                                              ; preds = %bb266  %i7 = add i32 %i3, %arg167  %i8 = sext i32 %i7 to i6468  %i9 = call ptr @hoge(ptr %i, i64 %i8)69  %i10 = load i8, ptr %i9, align 170  %i11 = getelementptr %t0, ptr %arg, i64 0, i32 171  %i12 = load ptr, ptr %i11, align 872  %i13 = sext i32 %arg1 to i6473  %i14 = call ptr @foo.1(ptr %i12, i64 %i13)74  %i15 = or i8 %i10, 175  %i16 = zext i8 %i15 to i3276  store i32 %i16, ptr %i14, align 477  %i17 = add i32 %i3, -178  br label %bb279}80 81define linkonce_odr void @baz(ptr %arg, ptr %arg1) {82bb:83  call void @pluto(ptr %arg, ptr %arg1)84  ret void85}86 87define linkonce_odr ptr @foo.1(ptr %arg, i64 %arg1) {88bb:89  %i = call ptr @baz.2(ptr %arg, i64 %arg1)90  ret ptr %i91}92 93define linkonce_odr ptr @baz.2(ptr %arg, i64 %arg1) {94bb:95  %i = getelementptr [16 x i32], ptr %arg, i64 0, i64 %arg196  ret ptr %i97}98 99define linkonce_odr void @pluto(ptr %arg, ptr %arg1) {100bb:101  %i = getelementptr %t2, ptr %arg, i64 0, i32 1102  %i2 = load ptr, ptr %i, align 8103  %i3 = load i32, ptr %i2, align 4104  %i4 = add i32 %i3, 1105  store i32 %i4, ptr %arg1, align 4106  ret void107}108 109define linkonce_odr ptr @ham(ptr %arg, i64 %arg1) {110bb:111  %i = getelementptr [64 x i8], ptr %arg, i64 0, i64 %arg1112  ret ptr %i113}114