https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65958
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target|arm | Status|UNCONFIRMED |NEW Last reconfirmed| |2015-05-02 CC| |ebotcazou at gcc dot gnu.org Target Milestone|--- |6.0 Summary|[arm] -fstack-check breaks |-fstack-check breaks alloca |__builtin(alloca) |on architectures using | |generic stack checking Ever confirmed|0 |1 --- Comment #3 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- Known issue with architectures doing stack-checking the old way like ARM, but the underlying issue is more general and related to VLAs: extern void abort (void); int foo (int n) { char *p, *q; if (1) { char i[n]; p = __builtin_alloca (8); p[0] = 1; } q = __builtin_alloca (64); __builtin_memset (q, 0, 64); return !p[0]; } int main (void) { if (foo (48) != 0) abort (); return 0; } fails on x86-64 because of it (with or without -fstack-check).