[Bug tree-optimization/92029] [10 Regression] 'libgomp.fortran/pr90779.f90' ICE for nvptx offloading
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Oct 9 10:07:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92029
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |10.0
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
It means the variable is gone. I guess it's too late to mark the variable as
force_output where it is currently done. Maybe do it in
varpool_node::get_create
where we also push it to the offload_vars vector? I'm not sure if at that
point the variable is used in the IL but only "meta-wise" thus another
fix would be to _not_ stream it into the offload section in
output_offload_tables
if the variable was removed:
diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c
index 147975ba869..481b4a5b45c 100644
--- a/gcc/lto-cgraph.c
+++ b/gcc/lto-cgraph.c
@@ -1076,8 +1076,9 @@ output_offload_tables (void)
{
streamer_write_enum (ob->main_stream, LTO_symtab_tags,
LTO_symtab_last_tag, LTO_symtab_variable);
- lto_output_var_decl_index (ob->decl_state, ob->main_stream,
- (*offload_vars)[i]);
+ if (varpool_node::get ((*offload_vars)[i]))
+ lto_output_var_decl_index (ob->decl_state, ob->main_stream,
+ (*offload_vars)[i]);
}
streamer_write_uhwi_stream (ob->main_stream, 0);
I'm also curious why we need to populate offload_vars during varpool node
creation time rather than when streaming the offload portion. IPA
references should allow to identify those that need streaming?
But that's a larger re-org.
That said, the change just exposed a latent issue - a variable being optimized
away between putting it into offload_vars and streaming out.
More information about the Gcc-bugs
mailing list