https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66754
Mikael Pettersson <mikpelinux at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mikpelinux at gmail dot com --- Comment #2 from Mikael Pettersson <mikpelinux at gmail dot com> --- (In reply to Martin Liška from comment #1) > That means, libc hasn't been built with the option and it explain the abort. > Am I right? No, libc isn't involved in the code leading up to the abort. The abort can also be triggered by adding attribute((regparm(3))) to the foo() and bar() function definitions and compiling with -m32 -O0 w/o -mregparm=3. In that case however there is also a warning: builtin-apply2.c: In function 'bar': builtin-apply2.c:38:19: warning: passing argument 1 of '__builtin_apply' from incompatible pointer type [-Wincompatible-pointer-types] __builtin_apply(foo, __builtin_apply_args(), STACK_ARGUMENTS_SIZE); ^ builtin-apply2.c:38:19: note: expected 'void (*)()' but argument is of type 'void (__attribute__((__regparm__(3))) *)(char *, double, double, double, int'