Set *palign for VT_BITFIELD and VT_ARRAY types in classify_x86_64_arg as else you happen to have in *palign what was already there. This can cause gfunc_call on !PE systems to consider an array as 16 bytes align and trigger the assert if the previous argument was 16 bytes aligned.
Unified · Split
| @@ -993,6 +993,7 @@ static X86_64_Mode classify_x86_64_arg(CType *ty, CType *ret, int *psize, int *p · 992 unmodified lines | |||
| 993 | 993 | ||
| 994 | if (ty->t & (VT_BITFIELD|VT_ARRAY)) { | 994 | if (ty->t & (VT_BITFIELD|VT_ARRAY)) { |
| 995 | *psize = 8; | 995 | *psize = 8; |
| 996 | *palign = 8; | ||
| 996 | *reg_count = 1; | 997 | *reg_count = 1; |
| 997 | ret_t = ty->t; | 998 | ret_t = ty->t; |
| 998 | mode = x86_64_mode_integer; | 999 | mode = x86_64_mode_integer; |