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