| # 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=amdgpu7.00 -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: | |
| ... |