| # REQUIRES: aarch64-registered-target, amdgpu-registered-target |
| |
| # RUN: split-file %s %t |
| |
| # RUN: llc -mtriple=aarch64 -run-pass=none -o - %t/valid.mir |
| # RUN: not --crash llc -mtriple=aarch64 -run-pass=none -o - %t/lower.mir 2>&1 | FileCheck %t/lower.mir |
| # RUN: not --crash llc -mtriple=aarch64 -run-pass=none -o - %t/overlap.mir 2>&1 | FileCheck %t/overlap.mir |
| # RUN: not --crash llc -mtriple=amdgcn -run-pass=none -o - %t/higher.mir 2>&1 | FileCheck %t/higher.mir |
| |
| ;--- valid.mir |
| --- |
| name: valid |
| frameInfo: |
| stackSize: 16 |
| stackProtector: '%stack.1' |
| stack: |
| - { id: 0, offset: -24, size: 8, alignment: 8, stack-id: default } |
| - { id: 1, offset: -16, size: 8, alignment: 8, stack-id: default } |
| body: | |
| bb.0: |
| ... |
| |
| ;--- lower.mir |
| # CHECK: *** Bad machine code: Stack protector is not the top-most object on the stack *** |
| --- |
| name: lower |
| frameInfo: |
| stackSize: 16 |
| stackProtector: '%stack.1' |
| stack: |
| - { id: 0, offset: -16, size: 8, alignment: 8, stack-id: default } |
| - { id: 1, offset: -24, size: 8, alignment: 8, stack-id: default } |
| body: | |
| bb.0: |
| ... |
| |
| ;--- overlap.mir |
| # CHECK: *** Bad machine code: Stack protector overlaps with another stack object *** |
| --- |
| name: overlap |
| frameInfo: |
| stackSize: 16 |
| stackProtector: '%stack.1' |
| stack: |
| - { id: 0, offset: -20, size: 8, alignment: 4, stack-id: default } |
| - { id: 1, offset: -16, size: 8, alignment: 8, stack-id: default } |
| body: | |
| bb.0: |
| ... |
| |
| ;--- higher.mir |
| # CHECK: *** Bad machine code: Stack protector is not the top-most object on the stack *** |
| --- |
| name: higher |
| frameInfo: |
| stackSize: 16 |
| stackProtector: '%stack.1' |
| stack: |
| - { id: 0, offset: 16, size: 8, alignment: 8, stack-id: default } |
| - { id: 1, offset: 24, size: 8, alignment: 8, stack-id: default } |
| body: | |
| bb.0: |
| ... |