1# RUN: not --crash llc -mtriple=mips-mti-linux-gnu -mcpu=mips32r2 %s \ 2# RUN: -start-after=finalize-isel -stop-after=finalize-isel \ 3# RUN: -verify-machineinstrs -mattr=+use-indirect-jump-hazard -o - 2>&1 \ 4# RUN: | FileCheck %s 5 6# Test that calls are checked when using indirect jumps guards (hazard variant). 7 8# CHECK: Bad machine code: invalid instruction when using jump guards! 9--- | 10 define i32 @fooTail(i32 (i32)* nocapture %f1) { 11 entry: 12 %0 = tail call i32 %f1(i32 14) 13 ret i32 %0 14 } 15... 16--- 17name: fooTail 18alignment: 4 19exposesReturnsTwice: false 20legalized: false 21regBankSelected: false 22selected: false 23tracksRegLiveness: true 24registers: 25 - { id: 0, class: gpr32, preferred-register: '' } 26 - { id: 1, class: gpr32, preferred-register: '' } 27liveins: 28 - { reg: '$a0', virtual-reg: '%0' } 29frameInfo: 30 isFrameAddressTaken: false 31 isReturnAddressTaken: false 32 hasStackMap: false 33 hasPatchPoint: false 34 stackSize: 0 35 offsetAdjustment: 0 36 maxAlignment: 1 37 adjustsStack: false 38 hasCalls: false 39 stackProtector: '' 40 maxCallFrameSize: 4294967295 41 hasOpaqueSPAdjustment: false 42 hasVAStart: false 43 hasMustTailInVarArgFunc: false 44 savePoint: '' 45 restorePoint: '' 46fixedStack: 47stack: 48constants: 49body: | 50 bb.0.entry: 51 liveins: $a0 52 53 %0:gpr32 = COPY $a0 54 %1:gpr32 = ADDiu $zero, 14 55 $a0 = COPY %1 56 TAILCALLREG %0, csr_o32, implicit-def dead $at, implicit $a0 57 58... 59