• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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