157 lines · plain
1# RUN: llc -run-pass none -o - %s | FileCheck %s 2 3--- |4 target triple = "x86_64-unknown-linux-gnu"5 6 define ptr @foo(ptr %ptr, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6) {7 entry:8 %tobool.not = icmp eq ptr %ptr, null9 br i1 %tobool.not, label %if.then, label %if.end10 11 if.then: ; preds = %entry12 %call = tail call ptr @bar(ptr %ptr, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6)13 br label %if.end14 15 if.end: ; preds = %if.then, %entry16 %ptr.addr.0 = phi ptr [ %call, %if.then ], [ %ptr, %entry ]17 %incdec.ptr = getelementptr inbounds i8, ptr %ptr.addr.0, i64 118 %call2 = tail call ptr @qux(ptr %incdec.ptr, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6)19 ret ptr %call220 }21 22 declare ptr @bar(ptr, i64, i64, i64, i64, i64)23 24 declare ptr @qux(ptr, i64, i64, i64, i64, i64)25...26---27name: foo28alignment: 1629exposesReturnsTwice: false30legalized: false31regBankSelected: false32selected: false33failedISel: false34tracksRegLiveness: true35hasWinCFI: false36noPhis: true37isSSA: false38noVRegs: true39hasFakeUses: false40callsEHReturn: false41callsUnwindInit: false42hasEHContTarget: false43hasEHScopes: false44hasEHFunclets: false45isOutlined: false46debugInstrRef: true47failsVerification: false48tracksDebugUserValues: true49registers: []50liveins:51 - { reg: '$rdi', virtual-reg: '' }52 - { reg: '$rsi', virtual-reg: '' }53 - { reg: '$rdx', virtual-reg: '' }54 - { reg: '$rcx', virtual-reg: '' }55 - { reg: '$r8', virtual-reg: '' }56 - { reg: '$r9', virtual-reg: '' }57frameInfo:58 isFrameAddressTaken: false59 isReturnAddressTaken: false60 hasStackMap: false61 hasPatchPoint: false62 stackSize: 063 offsetAdjustment: 064 maxAlignment: 165 adjustsStack: true66 hasCalls: true67 stackProtector: ''68 functionContext: ''69 maxCallFrameSize: 429496729570 cvBytesOfCalleeSavedRegisters: 071 hasOpaqueSPAdjustment: false72 hasVAStart: false73 hasMustTailInVarArgFunc: false74 hasTailCall: true75 isCalleeSavedInfoValid: false76 localFrameSize: 077# CHECK: savePoint:78# CHECK-NEXT: - point: '%bb.2'79# CHECK-NEXT: registers:80# CHECK-NEXT: - '$r12'81# CHECK-NEXT: - '$r13'82# CHECK-NEXT: - '$r14'83# CHECK-NEXT: - '$r15'84# CHECK-NEXT: - '$rbx'85# CHECK: restorePoint:86# CHECK-NEXT: - point: '%bb.2'87# CHECK-NEXT: registers:88# CHECK-NEXT: - '$r12'89# CHECK-NEXT: - '$r13'90# CHECK-NEXT: - '$r14'91# CHECK-NEXT: - '$r15'92# CHECK-NEXT: - '$rbx'93 savePoint:94 - point: '%bb.1'95 registers:96 - '$rbx'97 - '$r12'98 - '$r13'99 - '$r14'100 - '$r15'101 restorePoint:102 - point: '%bb.1'103 registers:104 - '$rbx'105 - '$r12'106 - '$r13'107 - '$r14'108 - '$r15'109fixedStack: []110stack: []111entry_values: []112callSites: []113debugValueSubstitutions: []114constants: []115machineFunctionInfo:116 amxProgModel: None117body: |118 bb.0.entry:119 successors: %bb.1(0x30000000), %bb.3(0x50000000)120 liveins: $rcx, $rdi, $rdx, $rsi, $r8, $r9121 122 TEST64rr renamable $rdi, renamable $rdi, implicit-def $eflags123 JCC_1 %bb.1, 4, implicit killed $eflags124 125 bb.3:126 successors: %bb.2(0x80000000)127 liveins: $rcx, $rdi, $rdx, $rsi, $r8, $r9128 129 JMP_1 %bb.2130 131 bb.1.if.then:132 successors: %bb.2(0x80000000)133 liveins: $rcx, $rdi, $rdx, $rsi, $r8, $r9134 135 ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp136 renamable $rbx = COPY renamable $rsi137 renamable $r14 = COPY renamable $rdx138 renamable $r15 = COPY renamable $rcx139 renamable $r12 = COPY renamable $r8140 renamable $r13 = COPY renamable $r9141 CALL64pcrel32 target-flags(x86-plt) @bar, csr_64, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, implicit $rdx, implicit $rcx, implicit $r8, implicit $r9, implicit-def $rsp, implicit-def $ssp, implicit-def $rax142 renamable $rsi = COPY killed renamable $rbx143 renamable $rdx = COPY killed renamable $r14144 renamable $rcx = COPY killed renamable $r15145 renamable $r8 = COPY killed renamable $r12146 renamable $r9 = COPY killed renamable $r13147 ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp148 renamable $rdi = COPY killed $rax149 150 bb.2.if.end:151 liveins: $rcx, $rdi, $rdx, $rsi, $r8, $r9152 153 renamable $rdi = nuw INC64r killed renamable $rdi, implicit-def dead $eflags154 TCRETURNdi64 target-flags(x86-plt) @qux, 0, csr_64, implicit $rsp, implicit $ssp, implicit $rdi, implicit $rsi, implicit $rdx, implicit $rcx, implicit $r8, implicit $r9155...156 157