| # RUN: not llc -mtriple=mips-mti-linux-gnu -mcpu=mips32r2 %s \ |
| # RUN: -start-after=expand-isel-pseudos -stop-after=expand-isel-pseudos \ |
| # RUN: -verify-machineinstrs -mattr=+use-indirect-jump-hazard -o - 2>&1 \ |
| # RUN: | FileCheck %s |
| |
| # That that tail calls are checked when using indirect jump guards (hazard variant). |
| |
| # CHECK: Bad machine code: invalid instruction when using jump guards! |
| --- | |
| define i32 @fooTail(i32 (i32)* nocapture %f1) { |
| entry: |
| %0 = tail call i32 %f1(i32 14) |
| ret i32 %0 |
| } |
| |
| ... |
| --- |
| name: fooTail |
| alignment: 2 |
| exposesReturnsTwice: false |
| legalized: false |
| regBankSelected: false |
| selected: false |
| tracksRegLiveness: true |
| registers: |
| - { id: 0, class: gpr32, preferred-register: '' } |
| - { id: 1, class: gpr32, preferred-register: '' } |
| liveins: |
| - { reg: '$a0', virtual-reg: '%0' } |
| frameInfo: |
| isFrameAddressTaken: false |
| isReturnAddressTaken: false |
| hasStackMap: false |
| hasPatchPoint: false |
| stackSize: 0 |
| offsetAdjustment: 0 |
| maxAlignment: 1 |
| adjustsStack: false |
| hasCalls: false |
| stackProtector: '' |
| maxCallFrameSize: 4294967295 |
| hasOpaqueSPAdjustment: false |
| hasVAStart: false |
| hasMustTailInVarArgFunc: false |
| savePoint: '' |
| restorePoint: '' |
| fixedStack: |
| stack: |
| constants: |
| body: | |
| bb.0.entry: |
| liveins: $a0 |
| |
| %0:gpr32 = COPY $a0 |
| %1:gpr32 = ADDiu $zero, 14 |
| $a0 = COPY %1 |
| TAILCALLREG %0, csr_o32, implicit-def dead $at, implicit $a0 |
| |
| ... |