[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
Sat Dec 5 14:31:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68560
--- Comment #12 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
> Looks like it's PR68540.
So it should work now?
The statement in fortran/trans-intrinsic.c
gfc_copy_formal_args_intr (sym, expr->value.function.isym,
ignore_optional ? expr->value.function.actual
: NULL);
looks suspicious: if ignore_optional means what indicated by the name and is
true, why passing expr->value.function.actual and NULL otherwise?
--- ../_clean/gcc/fortran/trans-intrinsic.c 2015-12-02 23:00:12.000000000
+0100
+++ gcc/fortran/trans-intrinsic.c 2015-12-04 12:26:05.000000000 +0100
@@ -3032,7 +3032,7 @@ gfc_get_symbol_for_expr (gfc_expr * expr
}
gfc_copy_formal_args_intr (sym, expr->value.function.isym,
- ignore_optional ? expr->value.function.actual
+ !ignore_optional ? expr->value.function.actual
: NULL);
return sym;
"fixes" the failure for gfortran.dg/shape_8.f90, but causes
FAIL: gfortran.dg/char_pack_1.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/char_eoshift_1.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/char_pack_2.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/char_eoshift_2.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/cshift_large_1.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/eoshift_large_1.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/nested_reshape.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/optional_dim_2.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/optional_dim_3.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/reshape_4.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/reshape_zerosize_1.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/widechar_intrinsics_10.f90 -g -flto (test for excess
errors)
FAIL: gfortran.dg/widechar_intrinsics_5.f90 -g -flto (test for excess
errors)
FAIL: gfortran.dg/zero_sized_1.f90 -g -flto (test for excess errors)
with -m32/-m64 and
FAIL: gfortran.dg/cshift_large_1.f90 -g -flto (test for excess errors)
FAIL: gfortran.dg/eoshift_large_1.f90 -g -flto (test for excess errors)
with -m64 (not run with -m32).
For gfortran.dg/optional_dim_2.f90 the diff between the patched (-) and
unpatched (+) trans-intrinsic.c is
logical(kind=4) A.12[4];
struct array1_logical(kind=4) atmp.11;
+ integer(kind=8) * D.3471;
integer(kind=8) D.3470;
atmp.11.dim[0].lbound = 0;
atmp.11.dim[0].ubound = 3;
atmp.11.data = (void * restrict) &A.12;
atmp.11.offset = 0;
- _gfortran_eoshift0_8 (&atmp.11, D.3467, D.3469, 0B, &D.3470);
+ _gfortran_eoshift0_8 (&atmp.11, D.3467, D.3469, 0B, D.3471);
More information about the Gcc-bugs
mailing list