brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · dfc0410 Raw
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