diff options
| author | Folkert <folkert@folkertdev.nl> | 2024-07-16 15:57:00 +0200 |
|---|---|---|
| committer | Folkert <folkert@folkertdev.nl> | 2024-07-16 15:58:33 +0200 |
| commit | 50ba821e12f51903aba6902b2b404edbc94011d2 (patch) | |
| tree | 75b79e1400de2bc59d62b764ed7d8db27061b057 /compiler/rustc_codegen_ssa/src/errors.rs | |
| parent | d3dd34a1d4a7e25a92a0d65994bb01a5d17c59ee (diff) | |
| download | rust-50ba821e12f51903aba6902b2b404edbc94011d2.tar.gz rust-50ba821e12f51903aba6902b2b404edbc94011d2.zip | |
add rust error message for CMSE stack spill
when the `C-cmse-nonsecure-call` ABI is used, arguments and return values must be passed via registers. Failing to do so (i.e. spilling to the stack) causes an LLVM error down the line, but now rustc will properly emit an error a bit earlier in the chain
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/errors.rs')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/errors.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_ssa/src/errors.rs b/compiler/rustc_codegen_ssa/src/errors.rs index e9d31db9254..13a2dce3e69 100644 --- a/compiler/rustc_codegen_ssa/src/errors.rs +++ b/compiler/rustc_codegen_ssa/src/errors.rs @@ -1033,3 +1033,25 @@ pub struct CompilerBuiltinsCannotCall { pub caller: String, pub callee: String, } + +#[derive(Diagnostic)] +#[diag(codegen_ssa_cmse_call_inputs_stack_spill, code = E0798)] +#[note] +pub struct CmseCallInputsStackSpill { + #[primary_span] + #[label(codegen_ssa_call)] + pub span: Span, + #[label] + pub func_span: Span, +} + +#[derive(Diagnostic)] +#[diag(codegen_ssa_cmse_call_output_stack_spill, code = E0798)] +#[note] +pub struct CmseCallOutputStackSpill { + #[primary_span] + #[label(codegen_ssa_call)] + pub span: Span, + #[label] + pub func_span: Span, +} |
