https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95237
Bug ID: 95237 Summary: LOCAL_DECL_ALIGNMENT shrinks alignment, FAIL gcc.target/i386/pr69454-2.c Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: rguenth at gcc dot gnu.org Target Milestone: --- The testcase and a few others now ICEs on x86_64 with -m32 since LOCAL_DECL_ALIGNMENT with -mpreferred-stack-boundary=2 shrinks alignment of 'long long' from 8 to 4. /home/rguenther/src/trunk/gcc/testsuite/gcc.target/i386/pr69454-2.c: In function 'fn1':^M /home/rguenther/src/trunk/gcc/testsuite/gcc.target/i386/pr69454-2.c:7:6: internal compiler error: in execute, at adjust-alignment.c:73^M 0x216245b execute^M ../../src/trunk/gcc/adjust-alignment.c:73^M Please submit a full bug report,^M this was a latent wrong-code bug before if you consider typedef __UINTPTR_TYPE__ uintptr_t; void __attribute__((noipa)) foo (long long *p, uintptr_t a) { if ((uintptr_t)p & (a-1)) __builtin_abort (); } int main() { long long x; uintptr_t a = __alignof__(x); foo(&x, a); return 0; } and the frame of main not being aligned to 8 bytes.