| author | |
| committer | |
| log | 0f87031cdaf2a05c6d45c99b4b549db49803ffca |
| tree | 5d47a782390b0a1758fd7200328a576a318dff5a |
| parent | 431092fa612ca193cff56fd3430ac037ff70102b |
2 files changed, 11 insertions(+), 1 deletions(-)
src/Sema.zig+1-1| ... | @@ -29126,7 +29126,7 @@ fn callconvCoerceAllowed( | ... | @@ -29126,7 +29126,7 @@ fn callconvCoerceAllowed( |
| 29126 | if (@TypeOf(src_data) != void) { | 29126 | if (@TypeOf(src_data) != void) { |
| 29127 | const default_stack_align = target.stackAlignment(); | 29127 | const default_stack_align = target.stackAlignment(); |
| 29128 | const src_stack_align = src_data.incoming_stack_alignment orelse default_stack_align; | 29128 | const src_stack_align = src_data.incoming_stack_alignment orelse default_stack_align; |
| 29129 | const dest_stack_align = src_data.incoming_stack_alignment orelse default_stack_align; | 29129 | const dest_stack_align = dest_data.incoming_stack_alignment orelse default_stack_align; |
| 29130 | if (dest_stack_align < src_stack_align) return false; | 29130 | if (dest_stack_align < src_stack_align) return false; |
| 29131 | } | 29131 | } |
| 29132 | switch (@TypeOf(src_data)) { | 29132 | switch (@TypeOf(src_data)) { |
test/cases/compile_errors/callconv_stack_alignment_coerce.zig created+10| ... | @@ -0,0 +1,10 @@ | ||
| 1 | fn foo() callconv(.{ .x86_64_sysv = .{ .incoming_stack_alignment = 32 } }) void {} | ||
| 2 | const Bar = *const fn () callconv(.{ .x86_64_sysv = .{ .incoming_stack_alignment = 16 } }) void; | ||
| 3 | export var p: Bar = &foo; | ||
| 4 | |||
| 5 | // error | ||
| 6 | // target=x86_64-linux-none | ||
| 7 | // | ||
| 8 | // :3:21: error: expected type '*const fn () callconv(.{ .x86_64_sysv = .{ .incoming_stack_alignment = 16 } }) void', found '*const fn () callconv(.{ .x86_64_sysv = .{ .incoming_stack_alignment = 32 } }) void' | ||
| 9 | // :3:21: note: pointer type child 'fn () callconv(.{ .x86_64_sysv = .{ .incoming_stack_alignment = 32 } }) void' cannot cast into pointer type child 'fn () callconv(.{ .x86_64_sysv = .{ .incoming_stack_alignment = 16 } }) void' | ||
| 10 | // :3:21: note: calling convention 'x86_64_sysv' cannot cast into calling convention 'x86_64_sysv' | ||