130 lines · plain
1# RUN: llc -mtriple=aarch64-apple-ios -run-pass=early-tailduplication %s -o - | FileCheck %s2 3--- |4 ; ModuleID = 'taildup.ll'5 source_filename = "taildup.ll"6 target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"7 target triple = "aarch64-apple-ios"8 9 @bb1 = global ptr blockaddress(@foo, %final)10 @bb2 = global ptr inttoptr (i32 1 to ptr)11 12 define void @foo(i1 %tst, ptr %ptr) {13 br i1 %tst, label %left, label %right14 15 left: ; preds = %016 %val.left = call i32 @bar()17 br label %next18 19 right: ; preds = %020 %val.right = call i32 @baz()21 br label %next22 23 next: ; preds = %right, %left24 %val = phi i32 [ %val.left, %left ], [ %val.right, %right ]25 store i32 %val, ptr %ptr, align 426 br label %final27 28 final: ; preds = %next29 %1 = call i32 @bar()30 ret void31 }32 33 declare i32 @bar()34 35 declare i32 @baz()36 37...38---39name: foo40alignment: 441exposesReturnsTwice: false42legalized: false43regBankSelected: false44selected: false45failedISel: false46tracksRegLiveness: true47hasWinCFI: false48registers:49 - { id: 0, class: gpr32all, preferred-register: '' }50 - { id: 1, class: gpr32all, preferred-register: '' }51 - { id: 2, class: gpr32, preferred-register: '' }52 - { id: 3, class: gpr32, preferred-register: '' }53 - { id: 4, class: gpr64common, preferred-register: '' }54 - { id: 5, class: gpr32all, preferred-register: '' }55 - { id: 6, class: gpr32all, preferred-register: '' }56 - { id: 7, class: gpr32all, preferred-register: '' }57liveins:58 - { reg: '$w0', virtual-reg: '%3' }59 - { reg: '$x1', virtual-reg: '%4' }60frameInfo:61 isFrameAddressTaken: false62 isReturnAddressTaken: false63 hasStackMap: false64 hasPatchPoint: false65 stackSize: 066 offsetAdjustment: 067 maxAlignment: 168 adjustsStack: true69 hasCalls: true70 stackProtector: ''71 maxCallFrameSize: 072 cvBytesOfCalleeSavedRegisters: 073 hasOpaqueSPAdjustment: false74 hasVAStart: false75 hasMustTailInVarArgFunc: false76 hasTailCall: false77 localFrameSize: 078 savePoint: []79 restorePoint: []80fixedStack: []81stack: []82callSites: []83debugValueSubstitutions: []84constants: []85machineFunctionInfo: {}86body: |87 bb.0 (%ir-block.0):88 successors: %bb.1(0x40000000), %bb.2(0x40000000)89 liveins: $w0, $x190 91 %4:gpr64common = COPY $x192 %3:gpr32 = COPY $w093 TBZW %3, 0, %bb.294 B %bb.195 96 bb.1.left:97 successors: %bb.3(0x80000000)98 99 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp100 BL @bar, csr_darwin_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0101 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp102 %6:gpr32all = COPY $w0103 %0:gpr32all = COPY %6104 B %bb.3105 106 bb.2.right:107 successors: %bb.3(0x80000000)108 109 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp110 BL @baz, csr_darwin_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0111 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp112 %5:gpr32all = COPY $w0113 %1:gpr32all = COPY %5114 115 bb.3.next:116 successors: %bb.4(0x80000000)117 118 ; CHECK: %2:gpr32 = PHI119 %2:gpr32 = PHI %1, %bb.2, %0, %bb.1120 STRWui %2, %4, 0 :: (store (s32) into %ir.ptr)121 122 bb.4.final (ir-block-address-taken %ir-block.final):123 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp124 BL @bar, csr_darwin_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $w0125 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp126 %7:gpr32all = COPY $w0127 RET_ReallyLR128 129...130