[Bug fortran/68560] [6 Regression] The test gfortran.dg/shape_8.f90 now fails when compiled with -flto
dominiq at lps dot ens.fr
gcc-bugzilla@gcc.gnu.org
Thu Dec 3 13:41:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68560
Dominique d'Humieres <dominiq at lps dot ens.fr> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |tkoenig at gcc dot gnu.org
Component|lto |fortran
--- Comment #2 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
For the test
program test
implicit none
integer :: c(2), d(2)
real, allocatable :: x(:,:)
allocate(x(2,5))
c = shape(x)
d = shape(x,kind=4)
end
the result of the compilation with -fdump-tree-original is
...
{
struct array2_real(kind=4) * D.3443;
struct array1_integer(kind=4) parm.1;
parm.1.dtype = 265;
parm.1.dim[0].lbound = 1;
parm.1.dim[0].ubound = 2;
parm.1.dim[0].stride = 1;
parm.1.data = (void *) &c[0];
parm.1.offset = -1;
D.3443 = &x;
_gfortran_shape_4 (&parm.1, D.3443);
}
{
integer(kind=4) * D.3453;
static integer(kind=4) C.3452 = 4;
struct array2_real(kind=4) * D.3451;
struct array1_integer(kind=4) parm.2;
parm.2.dtype = 265;
parm.2.dim[0].lbound = 1;
parm.2.dim[0].ubound = 2;
parm.2.dim[0].stride = 1;
parm.2.data = (void *) &d[0];
parm.2.offset = -1;
D.3451 = &x;
D.3453 = &C.3452;
_gfortran_shape_4 (&parm.2, D.3451, D.3453);
}
...
and -Wlto-type-mismatch seems right to complain that
_gfortran_shape_4 (&parm.2, D.3451, D.3453);
does not match
_gfortran_shape_4 (&parm.1, D.3443);
I have tried to understand why using the optional 'kind' argument generates a
third argument (not needed as it is reflected by _gfortran_shape_x for kind=x).
Looking at libgfortran/generated/shape_i4.c I see that shape_4 expects only two
arguments.
Looking at gcc/fortran/trans-intrinsic.c, I see
...
case GFC_ISYM_SHAPE:
case GFC_ISYM_SPREAD:
case GFC_ISYM_YN2:
/* Ignore absent optional parameters. */
return 1;
...
Am I correct to understand that it is intended to prevents the emission of the
optional argument? If yes, why is it not working (I lost the scent after that)?
More information about the Gcc-bugs
mailing list