add maximum value for @setAlignStack
This commit is contained in:
parent
c1642355f0
commit
643ab90ace
@ -15312,6 +15312,11 @@ static TypeTableEntry *ir_analyze_instruction_set_align_stack(IrAnalyze *ira, Ir
|
||||
if (!ir_resolve_align(ira, align_bytes_inst, &align_bytes))
|
||||
return ira->codegen->builtin_types.entry_invalid;
|
||||
|
||||
if (align_bytes > 256) {
|
||||
ir_add_error(ira, &instruction->base, buf_sprintf("attempt to @setAlignStack(%" PRIu32 "); maximum is 256", align_bytes));
|
||||
return ira->codegen->builtin_types.entry_invalid;
|
||||
}
|
||||
|
||||
FnTableEntry *fn_entry = exec_fn_entry(ira->new_irb.exec);
|
||||
if (fn_entry == nullptr) {
|
||||
ir_add_error(ira, &instruction->base, buf_sprintf("@setAlignStack outside function"));
|
||||
|
@ -188,6 +188,6 @@ test "alignstack" {
|
||||
}
|
||||
|
||||
fn fnWithAlignedStack() -> i32 {
|
||||
@setAlignStack(1024);
|
||||
@setAlignStack(256);
|
||||
return 1234;
|
||||
}
|
||||
|
@ -2187,6 +2187,13 @@ pub fn addCases(cases: &tests.CompileErrorContext) {
|
||||
".tmp_source.zig:3:5: error: alignstack set twice",
|
||||
".tmp_source.zig:2:5: note: first set here");
|
||||
|
||||
cases.add("@setAlignStack too big",
|
||||
\\export fn entry() {
|
||||
\\ @setAlignStack(511 + 1);
|
||||
\\}
|
||||
,
|
||||
".tmp_source.zig:2:5: error: attempt to @setAlignStack(512); maximum is 256");
|
||||
|
||||
cases.add("storing runtime value in compile time variable then using it",
|
||||
\\const Mode = @import("builtin").Mode;
|
||||
\\
|
||||
|
Loading…
x
Reference in New Issue
Block a user