[Bug middle-end/64340] [5 Regression] FAIL: gnat.dg/lto8.adb (internal compiler error)

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jan 15 12:35:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64340

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
It's fixed by dropping all of TI_TARGET_OPTION_DEFAULT,
TI_TARGET_OPTION_CURRENT, TI_CURRENT_TARGET_PRAGMA and
TI_CURRENT_OPTIMIZE_PRAGMA from the special-casing.

We are trying to expand a GIMPLE_RESX stmt which should have been lowered
before.

(gdb) p opts_for_fn (cfun->decl)->x_flag_exceptions
$3 = 0 '\000'

thus somehow -fexceptions is bogus (also in 'Optimization' for some weird
reason).

(gdb) p global_options.x_flag_exceptions
$4 = 0

But certainly -fexceptions -fnon-call-exceptions was specified for both
source TUs and thus via lto-wrapper xgcc should have received them.  But
lto1 seems to ignore -fexceptions.

I've reproduced pasting the gnatmake command and then (gnatlink fails)

./lto1 -quiet lto8.o lto8_pkg.o -fexceptions -fnon-call-exceptions

The bogus setting is "restored" via

Hardware watchpoint 5: *$3

Old value = 1
New value = 0
cl_optimization_restore (opts=0x203fc80 <global_options>, ptr=0x7ffff6c344b0)
    at options-save.c:476
476       opts->x_flag_expensive_optimizations =
ptr->x_flag_expensive_optimizations;

#0  cl_optimization_restore (opts=0x203fc80 <global_options>, 
    ptr=0x7ffff6c344b0) at options-save.c:476
#1  0x00000000008f4603 in invoke_set_current_function_hook (fndecl=
    <function_decl 0x7ffff6e1a000 lto8___finalizer>)
    at /space/rguenther/src/svn/trunk2/gcc/function.c:4665
#2  0x00000000008f4909 in allocate_struct_function (
    fndecl=<function_decl 0x7ffff6e1a000 lto8___finalizer>, abstract_p=false)
    at /space/rguenther/src/svn/trunk2/gcc/function.c:4777
#3  0x00000000008f4b09 in push_struct_function (
    fndecl=<function_decl 0x7ffff6e1a000 lto8___finalizer>)
    at /space/rguenther/src/svn/trunk2/gcc/function.c:4819
#4  0x0000000000aed772 in input_function (
    fn_decl=<function_decl 0x7ffff6e1a000 lto8___finalizer>, 
    data_in=0x2062810, ib=0x7fffffffdad0, ib_cfg=0x7fffffffdac0)
    at /space/rguenther/src/svn/trunk2/gcc/lto-streamer-in.c:945
#5  0x0000000000aee06d in lto_read_body_or_constructor (
    file_data=0x7ffff7ff6000, node=0x7ffff6c347a8, data=0x20a2540 "\004", 
    section_type=LTO_section_function_body)
    at /space/rguenther/src/svn/trunk2/gcc/lto-streamer-in.c:1108
#6  0x0000000000aee311 in lto_input_function_body (file_data=0x7ffff7ff6000, 
    node=<cgraph_node* 0x7ffff6c347a8 "lto8___finalizer">, 
    data=0x20a2540 "\004")
    at /space/rguenther/src/svn/trunk2/gcc/lto-streamer-in.c:1153

now the question is why there is false for those options in the function
specific optimization nodes.  When do we populate these?



More information about the Gcc-bugs mailing list