[Bug lto/59723] [4.9 Regression] ICE: in lto_output_tree, at lto-streamer-out.c:1390 when compiling some Fortran tests with -flto

dominiq at lps dot ens.fr gcc-bugzilla@gcc.gnu.org
Sat Jan 11 21:02:00 GMT 2014


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59723

--- Comment #12 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
> This untested patch gets rid of the majority of the failures, although 
> I still see 2-3 errors in the dwarf code in tests like namelist_70.cf90:

Using

time make -k -j8 check-gfortran
RUNTESTFLAGS="--target_board=unix'{-m32/-flto,-m64/-flto}'"

I see the following (26) failures

FAIL: gfortran.dg/debug/pr35154-dwarf2.f -gdwarf-2  scan-assembler (DW_AT_name:
"label"|"label[^\n]*"[^\n]*DW_AT_name)
FAIL: gfortran.dg/debug/pr35154-dwarf2.f -gdwarf-2 -g3  scan-assembler
(DW_AT_name: "label"|"label[^\n]*"[^\n]*DW_AT_name)
FAIL: gfortran.dg/bind_c_array_params_2.f90  -O   scan-assembler-times myBindC
1
FAIL: gfortran.dg/bind_c_vars.f90  -O0  (test for excess errors)
FAIL: gfortran.dg/bind_c_vars.f90  -O1  (test for excess errors)
FAIL: gfortran.dg/bind_c_vars.f90  -O2  (test for excess errors)
FAIL: gfortran.dg/bind_c_vars.f90  -O3 -fomit-frame-pointer  (test for excess
errors)
FAIL: gfortran.dg/bind_c_vars.f90  -O3 -fomit-frame-pointer -funroll-loops 
(test for excess errors)
FAIL: gfortran.dg/bind_c_vars.f90  -O3 -fomit-frame-pointer -funroll-all-loops
-finline-functions  (test for excess errors)
FAIL: gfortran.dg/bind_c_vars.f90  -O3 -g  (test for excess errors)
FAIL: gfortran.dg/bind_c_vars.f90  -Os  (test for excess errors)
FAIL: gfortran.dg/data_namelist_conflict.f90  -O0  (internal compiler error)
FAIL: gfortran.dg/data_namelist_conflict.f90  -O0  (test for excess errors)
FAIL: gfortran.dg/data_namelist_conflict.f90  -O3 -g  (internal compiler error)
FAIL: gfortran.dg/data_namelist_conflict.f90  -O3 -g  (test for excess errors)
FAIL: gfortran.dg/namelist_14.f90  -O3 -g  (internal compiler error)
FAIL: gfortran.dg/namelist_14.f90  -O3 -g  (test for excess errors)
FAIL: gfortran.dg/namelist_51.f90  -O3 -g  (test for excess errors)
FAIL: gfortran.dg/namelist_69.f90  -O3 -g  (internal compiler error)
FAIL: gfortran.dg/namelist_69.f90  -O3 -g  (test for excess errors)
FAIL: gfortran.dg/namelist_70.f90  -O3 -g  (internal compiler error)
FAIL: gfortran.dg/namelist_70.f90  -O3 -g  (test for excess errors)
FAIL: gfortran.dg/pr48636-2.f90  -O   scan-ipa-dump cp "Creating a specialized
node of bar/[0-9]*\\."
FAIL: gfortran.dg/pr52835.f90  -O   scan-tree-dump optimized "bar "
FAIL: gfortran.dg/pr53787.f90  -O   scan-ipa-dump cp "Creating a specialized
node of init"
FAIL: gfortran.dg/pr53787.f90  -O   scan-ipa-dump-times cp "Aggregate
replacements" 2

The failures for gfortran.dg/bind_c_vars.f90 are PR54852.
The ICEs for gfortran.dg/namelist_(14|69|70).f90, triggered by -g, are at

        default:
          gcc_unreachable ();

(missing case NAMELIST_DECL: ?).

On darwin13, the excess error for gfortran.dg/namelist_51.f90 is

warning: invalid DWARF generated by the compiler: DIE 0x000001f0 has multiple 
AT_calling_convention attributes in
'/var/folders/8q/sh_swgz96r7f5vnn08f7fxr00000gn/T//ccD0Z3SE.ltrans0.ltrans.o'.

The ICE for gfortran.dg/data_namelist_conflict.f90 at -O or with -g is

lto1: internal compiler error: in lto_fixup_prevailing_decls, at lto/lto.c:2601

at

  gcc_checking_assert (code != CONSTRUCTOR && code != TREE_BINFO);

I have not looked at the scan issues nor at the debug capabilities with/without
the patch.

Concerning the time, the full regtesting of gfortran with -m32 and -m64 takes
~18' without -flto and ~35' with it. The full testing of all languages but go
is ~2h. Is the saving of 17' of CPU over 2h worth the missed testing and the
man power required to handle the problems?

Thanks for working on this PR.



More information about the Gcc-bugs mailing list