| # RUN: llc -mtriple=aarch64-unknown-fuchsia -run-pass=prolog-epilog %s -o - | FileCheck %s |
| |
| # This test ensures that constant registers like XZR are not considered live |
| # even if they are in the liveins list. This prevents the stack probe from |
| # incorrectly thinking it needs to preserve XZR if it's used as a temporary |
| # register. |
| |
| --- | |
| define void @func() #0 { |
| ret void |
| } |
| attributes #0 = { "probe-stack"="inline-asm" "stack-probe-size"="4096" } |
| ... |
| --- |
| name: func |
| tracksRegLiveness: true |
| frameInfo: |
| stackSize: 4096 |
| maxAlignment: 8 |
| localFrameSize: 4096 |
| stack: |
| - { id: 0, size: 4096, alignment: 8 } |
| - { id: 1, type: variable-sized } |
| body: | |
| bb.0: |
| liveins: $xzr |
| ; CHECK-LABEL: name: func |
| ; CHECK: $xzr = frame-setup LDRXui $sp, 0 |
| $x0 = COPY $xzr |
| RET_ReallyLR |