Commit 06c7edcc by Richard Guenther Committed by Richard Biener

re PR lto/46911 (ICE: SIGSEGV in add_name_and_src_coords_attributes…

re PR lto/46911 (ICE: SIGSEGV in add_name_and_src_coords_attributes (dwarf2out.c:17792) with -flto -g)

2011-03-01  Richard Guenther  <rguenther@suse.de>

	PR lto/46911
	* lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
	Do not stream DECL_ABSTRACT_ORIGIN.
	(lto_input_ts_block_tree_pointers): Nor BLOCK_SOURCE_LOCATION,
	BLOCK_NONLOCALIZED_VARS or BLOCK_ABSTRACT_ORIGIN.
	* lto-streamer-out.c (lto_output_ts_decl_common_tree_pointers):
	Do not stream DECL_ABSTRACT_ORIGIN.
	(lto_output_ts_block_tree_pointers): Nor BLOCK_SOURCE_LOCATION,
	BLOCK_NONLOCALIZED_VARS or BLOCK_ABSTRACT_ORIGIN.

	* gfortran.dg/lto/pr46911_0.f: New testcase.

From-SVN: r170588
parent d610c25e
2011-03-01 Richard Guenther <rguenther@suse.de>
PR lto/46911
* lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
Do not stream DECL_ABSTRACT_ORIGIN.
(lto_input_ts_block_tree_pointers): Nor BLOCK_SOURCE_LOCATION,
BLOCK_NONLOCALIZED_VARS or BLOCK_ABSTRACT_ORIGIN.
* lto-streamer-out.c (lto_output_ts_decl_common_tree_pointers):
Do not stream DECL_ABSTRACT_ORIGIN.
(lto_output_ts_block_tree_pointers): Nor BLOCK_SOURCE_LOCATION,
BLOCK_NONLOCALIZED_VARS or BLOCK_ABSTRACT_ORIGIN.
2011-02-28 Anatoly Sokolov <aesok@post.ru> 2011-02-28 Anatoly Sokolov <aesok@post.ru>
* config/stormy16/stormy16.h (FUNCTION_VALUE, LIBCALL_VALUE, * config/stormy16/stormy16.h (FUNCTION_VALUE, LIBCALL_VALUE,
......
...@@ -1980,7 +1980,9 @@ lto_input_ts_decl_common_tree_pointers (struct lto_input_block *ib, ...@@ -1980,7 +1980,9 @@ lto_input_ts_decl_common_tree_pointers (struct lto_input_block *ib,
DECL_INITIAL (expr) = lto_input_tree (ib, data_in); DECL_INITIAL (expr) = lto_input_tree (ib, data_in);
DECL_ATTRIBUTES (expr) = lto_input_tree (ib, data_in); DECL_ATTRIBUTES (expr) = lto_input_tree (ib, data_in);
DECL_ABSTRACT_ORIGIN (expr) = lto_input_tree (ib, data_in); /* Do not stream DECL_ABSTRACT_ORIGIN. We cannot handle debug information
for early inlining so drop it on the floor instead of ICEing in
dwarf2out.c. */
if (TREE_CODE (expr) == PARM_DECL) if (TREE_CODE (expr) == PARM_DECL)
TREE_CHAIN (expr) = lto_input_chain (ib, data_in); TREE_CHAIN (expr) = lto_input_chain (ib, data_in);
...@@ -2179,24 +2181,19 @@ static void ...@@ -2179,24 +2181,19 @@ static void
lto_input_ts_block_tree_pointers (struct lto_input_block *ib, lto_input_ts_block_tree_pointers (struct lto_input_block *ib,
struct data_in *data_in, tree expr) struct data_in *data_in, tree expr)
{ {
unsigned i, len; /* Do not stream BLOCK_SOURCE_LOCATION. We cannot handle debug information
for early inlining so drop it on the floor instead of ICEing in
BLOCK_SOURCE_LOCATION (expr) = lto_input_location (ib, data_in); dwarf2out.c. */
BLOCK_VARS (expr) = lto_input_chain (ib, data_in); BLOCK_VARS (expr) = lto_input_chain (ib, data_in);
len = lto_input_uleb128 (ib); /* Do not stream BLOCK_NONLOCALIZED_VARS. We cannot handle debug information
if (len > 0) for early inlining so drop it on the floor instead of ICEing in
{ dwarf2out.c. */
VEC_reserve_exact (tree, gc, BLOCK_NONLOCALIZED_VARS (expr), len);
for (i = 0; i < len; i++)
{
tree t = lto_input_tree (ib, data_in);
VEC_quick_push (tree, BLOCK_NONLOCALIZED_VARS (expr), t);
}
}
BLOCK_SUPERCONTEXT (expr) = lto_input_tree (ib, data_in); BLOCK_SUPERCONTEXT (expr) = lto_input_tree (ib, data_in);
BLOCK_ABSTRACT_ORIGIN (expr) = lto_input_tree (ib, data_in); /* Do not stream BLOCK_ABSTRACT_ORIGIN. We cannot handle debug information
for early inlining so drop it on the floor instead of ICEing in
dwarf2out.c. */
BLOCK_FRAGMENT_ORIGIN (expr) = lto_input_tree (ib, data_in); BLOCK_FRAGMENT_ORIGIN (expr) = lto_input_tree (ib, data_in);
BLOCK_FRAGMENT_CHAIN (expr) = lto_input_tree (ib, data_in); BLOCK_FRAGMENT_CHAIN (expr) = lto_input_tree (ib, data_in);
/* We re-compute BLOCK_SUBBLOCKS of our parent here instead /* We re-compute BLOCK_SUBBLOCKS of our parent here instead
......
...@@ -870,7 +870,9 @@ lto_output_ts_decl_common_tree_pointers (struct output_block *ob, tree expr, ...@@ -870,7 +870,9 @@ lto_output_ts_decl_common_tree_pointers (struct output_block *ob, tree expr,
} }
lto_output_tree_or_ref (ob, DECL_ATTRIBUTES (expr), ref_p); lto_output_tree_or_ref (ob, DECL_ATTRIBUTES (expr), ref_p);
lto_output_tree_or_ref (ob, DECL_ABSTRACT_ORIGIN (expr), ref_p); /* Do not stream DECL_ABSTRACT_ORIGIN. We cannot handle debug information
for early inlining so drop it on the floor instead of ICEing in
dwarf2out.c. */
if (TREE_CODE (expr) == PARM_DECL) if (TREE_CODE (expr) == PARM_DECL)
lto_output_chain (ob, TREE_CHAIN (expr), ref_p); lto_output_chain (ob, TREE_CHAIN (expr), ref_p);
...@@ -1054,21 +1056,19 @@ static void ...@@ -1054,21 +1056,19 @@ static void
lto_output_ts_block_tree_pointers (struct output_block *ob, tree expr, lto_output_ts_block_tree_pointers (struct output_block *ob, tree expr,
bool ref_p) bool ref_p)
{ {
unsigned i; /* Do not stream BLOCK_SOURCE_LOCATION. We cannot handle debug information
tree t; for early inlining so drop it on the floor instead of ICEing in
dwarf2out.c. */
lto_output_location (ob, BLOCK_SOURCE_LOCATION (expr));
lto_output_chain (ob, BLOCK_VARS (expr), ref_p); lto_output_chain (ob, BLOCK_VARS (expr), ref_p);
output_uleb128 (ob, VEC_length (tree, BLOCK_NONLOCALIZED_VARS (expr))); /* Do not stream BLOCK_NONLOCALIZED_VARS. We cannot handle debug information
FOR_EACH_VEC_ELT (tree, BLOCK_NONLOCALIZED_VARS (expr), i, t) for early inlining so drop it on the floor instead of ICEing in
{ dwarf2out.c. */
gcc_assert (DECL_CONTEXT (t) != expr);
lto_output_tree_or_ref (ob, t, ref_p);
}
lto_output_tree_or_ref (ob, BLOCK_SUPERCONTEXT (expr), ref_p); lto_output_tree_or_ref (ob, BLOCK_SUPERCONTEXT (expr), ref_p);
lto_output_tree_or_ref (ob, BLOCK_ABSTRACT_ORIGIN (expr), ref_p); /* Do not stream BLOCK_ABSTRACT_ORIGIN. We cannot handle debug information
for early inlining so drop it on the floor instead of ICEing in
dwarf2out.c. */
lto_output_tree_or_ref (ob, BLOCK_FRAGMENT_ORIGIN (expr), ref_p); lto_output_tree_or_ref (ob, BLOCK_FRAGMENT_ORIGIN (expr), ref_p);
lto_output_tree_or_ref (ob, BLOCK_FRAGMENT_CHAIN (expr), ref_p); lto_output_tree_or_ref (ob, BLOCK_FRAGMENT_CHAIN (expr), ref_p);
/* Do not output BLOCK_SUBBLOCKS. Instead on streaming-in this /* Do not output BLOCK_SUBBLOCKS. Instead on streaming-in this
......
2011-03-01 Richard Guenther <rguenther@suse.de>
PR lto/46911
* gfortran.dg/lto/pr46911_0.f: New testcase.
2011-02-28 Jerry DeLisle <jvdelisle@gcc.gnu.org> 2011-02-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/47933 PR libgfortran/47933
......
! { dg-lto-do link }
! { dg-lto-options {{ -O2 -flto -g }} }
! { dg-extra-ld-options "-r -nostdlib" }
common/main1/ eps(2)
call dalie6s(iqmod6,1,wx,cor6d)
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment