https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119460
Paul Thomas <pault at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |pault at gcc dot gnu.org --- Comment #11 from Paul Thomas <pault at gcc dot gnu.org> --- Created attachment 60958 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=60958&action=edit fortran equivalent of the failing testcase in the previous comment 'double_wrap' is meant to spoof up reduce. This test compiles and runs fine with -m32. It even produces the loader warning about the executable stack and generates this prototype: static void double_wrap (real(kind=16) & restrict, struct array01_real(kind=16) & restrict, void (*<T652>) (real(kind=16) & restrict, real(kind=16) & restrict, real(kind=16) & restrict), integer(kind=4) * restrict); void reduce_scalar (void *res, parray *array, void (*operation) (void *, void *, void *), GFC_INTEGER_4 *dim, Apart from the types, the differences are the use of the restrict keyword and *<T652> to represent 'sub' in the prototype. 'restrict' asserts that the arguments do not alias as an aid to optimization and so should not cause the observed problem. I have always wondered what the <T652> means but, at the time of writing, have been unable to enlighten myself. Ideas? I'll turn to the other fixes just as soon as (if?) I solve the initial problem. Paul