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'

Reply via email to