This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: RFC: Support non-standard extension (call via casted function pointer)
- From: Richard Z <rz at linux-m68k dot org>
- To: Michael Karcher <debian at mkarcher dot dialup dot fu-berlin dot de>
- Cc: gcc at gcc dot gnu dot org, John Paul Adrian Glaubitz <glaubitz at physik dot fu-berlin dot de>, Debian m68k <debian-68k at lists dot debian dot org>, Andreas Schwab <schwab at linux-m68k dot org>, doko at debian dot org
- Date: Tue, 26 Jan 2016 15:53:09 +0100
- Subject: Re: RFC: Support non-standard extension (call via casted function pointer)
- Authentication-results: sourceware.org; auth=none
- References: <56A697DE dot 5090207 at mkarcher dot dialup dot fu-berlin dot de>
On Mon, Jan 25, 2016 at 10:47:10PM +0100, Michael Karcher wrote:
> Hello gcc developers,
>
> as discussed in https://ghc.haskell.org/trac/ghc/ticket/11395 (and
> forwarded as PR c/69221), ghc generates non-compliant C code that is not
> compiled as intended on m68k. This is because its internal Cmm (a C--
> dialect) to C compiler needs to declare external functions (no varargs)
> without fixing the type. It currently uses "unspecified-function-type*
> function();" which is a quite good fit, because the argument list is
> still left open, but it fixes the return type to some pointer type.
> Before calling that function, the function address is put into a
> function pointer of the correct type and invoked via that pointer. This
> model currently works fine (possibly by accident) on all architectures
> ghc supports except m68k.
we have seen this problem come up plenty of times, so far it was always
solved by repairing the offending program.
>From experience I would say that whatever ghc is trying to do can be done
correctly and ghc should try that.
Richard
--
Name and OpenPGP keys available from pgp key servers