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

Reply via email to