llvm-project/llvm/test/CodeGen/RISCV/rv64-stackmap-args.ll
Guillaume DI FATTA a1ee1a9126
[CodeGen] @llvm.experimental.stackmap make operands immediate (#117932)
This pull request modifies the behavior of the
`@llvm.experimental.stackmap` intrinsic to require that its two first
operands (`id` and `numShadowBytes`) be **immediate values**. This
change ensures that variables cannot be passed as two first arguments to
this intrinsic.


Related Issue: https://github.com/llvm/llvm-project/issues/115733

### Testing
- Added new test cases to ensure errors are emitted for non-immediate
operands.
- Ran the full LLVM test suite to verify no regressions were introduced.
2024-12-11 17:41:19 +08:00

23 lines
681 B
LLVM

; RUN: not llc -mtriple=riscv64 < %s 2>&1 | FileCheck %s
; Tests error when we pass non-immediate parameters to @llvm.experiment.stackmap
define void @first_arg() {
; CHECK: immarg operand has non-immediate parameter
entry:
; First operand should be immediate
%id = add i64 0, 0
call void (i64, i32, ...) @llvm.experimental.stackmap(i64 %id, i32 0)
ret void
}
define void @second_arg() {
; CHECK: immarg operand has non-immediate parameter
entry:
; Second operand should be immediate
%numShadowByte = add i32 0, 0
call void (i64, i32, ...) @llvm.experimental.stackmap(i64 1, i32 %numShadowByte)
ret void
}
declare void @llvm.experimental.stackmap(i64, i32, ...)