brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · d0d87b3 Raw
107 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S -p 'require<profile-summary>,codegenprepare' -cgpp-huge-func=0 < %s | FileCheck %s3 4target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"5target triple = "x86_64-grtev4-linux-gnu"6 7@globalptr = external global ptr8declare ptr @get_ptr(i64)9 10; Can't recreate invoke instruction11 12define void @addr_from_invoke() personality ptr null {13; CHECK-LABEL: define void @addr_from_invoke() personality ptr null {14; CHECK-NEXT:  [[ENTRY:.*:]]15; CHECK-NEXT:    [[PTR:%.*]] = invoke ptr @get_ptr(i64 0)16; CHECK-NEXT:            to label %[[BODY_1:.*]] unwind label %[[EHCLEANUP:.*]]17; CHECK:       [[EHCLEANUP]]:18; CHECK-NEXT:    [[PAD:%.*]] = cleanuppad within none []19; CHECK-NEXT:    cleanupret from [[PAD]] unwind to caller20; CHECK:       [[BODY_1]]:21; CHECK-NEXT:    [[GEP1:%.*]] = bitcast ptr [[PTR]] to ptr22; CHECK-NEXT:    store <4 x i32> zeroinitializer, ptr [[GEP1]], align 423; CHECK-NEXT:    [[TMP0:%.*]] = bitcast ptr [[PTR]] to ptr24; CHECK-NEXT:    [[UNUSED:%.*]] = load <4 x i32>, ptr [[TMP0]], align 425; CHECK-NEXT:    store <4 x i32> zeroinitializer, ptr [[TMP0]], align 426; CHECK-NEXT:    ret void27;28entry:29  %ptr = invoke ptr @get_ptr(i64 0) to label %body.1 unwind label %ehcleanup30 31body.2:32  %unused = load <4 x i32>, ptr %gep, align 433  store <4 x i32> zeroinitializer, ptr %gep, align 434  ret void35 36ehcleanup:37  %pad = cleanuppad within none []38  cleanupret from %pad unwind to caller39 40body.1:41  %gep = getelementptr { i32 }, ptr %ptr, i64 0, i32 042  store <4 x i32> zeroinitializer, ptr %gep, align 443  br label %body.244}45 46define void @addr_from_arg(ptr %ptr, i1 %p) {47; CHECK-LABEL: define void @addr_from_arg(48; CHECK-SAME: ptr [[PTR:%.*]], i1 [[P:%.*]]) {49; CHECK-NEXT:  [[ENTRY:.*:]]50; CHECK-NEXT:    br i1 [[P]], label %[[BODY_1:.*]], label %[[EXIT:.*]]51; CHECK:       [[EXIT]]:52; CHECK-NEXT:    ret void53; CHECK:       [[BODY_1]]:54; CHECK-NEXT:    [[TMP0:%.*]] = bitcast ptr [[PTR]] to ptr55; CHECK-NEXT:    store <4 x i32> zeroinitializer, ptr [[TMP0]], align 456; CHECK-NEXT:    [[UNUSED:%.*]] = load <4 x i32>, ptr [[PTR]], align 457; CHECK-NEXT:    store <4 x i32> zeroinitializer, ptr [[PTR]], align 458; CHECK-NEXT:    ret void59;60entry:61  br i1 %p, label %body.1, label %exit62 63body.2:64  %unused = load <4 x i32>, ptr %gep, align 465  store <4 x i32> zeroinitializer, ptr %gep, align 466  ret void67 68exit:69  ret void70 71body.1:72  %gep = getelementptr { i32 }, ptr %ptr, i64 0, i32 073  store <4 x i32> zeroinitializer, ptr %gep, align 474  br label %body.275}76 77define void @addr_from_global(i1 %p) {78; CHECK-LABEL: define void @addr_from_global(79; CHECK-SAME: i1 [[P:%.*]]) {80; CHECK-NEXT:  [[ENTRY:.*:]]81; CHECK-NEXT:    br i1 [[P]], label %[[BODY_1:.*]], label %[[EXIT:.*]]82; CHECK:       [[EXIT]]:83; CHECK-NEXT:    ret void84; CHECK:       [[BODY_1]]:85; CHECK-NEXT:    [[GEP1:%.*]] = bitcast ptr @globalptr to ptr86; CHECK-NEXT:    store <4 x i32> zeroinitializer, ptr [[GEP1]], align 487; CHECK-NEXT:    [[UNUSED:%.*]] = load <4 x i32>, ptr @globalptr, align 488; CHECK-NEXT:    store <4 x i32> zeroinitializer, ptr @globalptr, align 489; CHECK-NEXT:    ret void90;91entry:92  br i1 %p, label %body.1, label %exit93 94body.2:95  %unused = load <4 x i32>, ptr %gep, align 496  store <4 x i32> zeroinitializer, ptr %gep, align 497  ret void98 99exit:100  ret void101 102body.1:103  %gep = getelementptr { i32 }, ptr @globalptr, i64 0, i32 0104  store <4 x i32> zeroinitializer, ptr %gep, align 4105  br label %body.2106}107