On January 25, 2016 10:47:10 PM GMT+01:00, Michael Karcher 
<deb...@mkarcher.dialup.fu-berlin.de> 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.
>
>I developed a gcc patch that does not change the code generation for
>conforming programs but fixes this non-conforming use-case by always
>taking the actual return type in the call expression into account, even
>if the function declaration to be called is known. Please comment
>whether such a patch has any chance to be applied to either gcc
>upstream
>or gcc in Debian.

Without looking at the patch this is already how GCC should behave for all 
targets.

Richard.

>Regards,
>  Michael Karcher


Reply via email to