# 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: ...