# RUN: not --crash llc -mtriple=mips-mti-linux-gnu -mcpu=mips32r2 %s \ # RUN: -start-after=finalize-isel -stop-after=finalize-isel \ # 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: 4 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 ...