summaryrefslogtreecommitdiff
path: root/gcc/lto-streamer-in.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-03-01 09:45:05 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-03-01 09:45:05 +0000
commitf69f16c8633fd5167aea83171748ca34dd3d2f94 (patch)
treecafb8fcad8e9b58d7db10092019913f456bcc23f /gcc/lto-streamer-in.c
parentebca8b757cf08b1ea48114084aeaa440ee073904 (diff)
downloadgcc-f69f16c8633fd5167aea83171748ca34dd3d2f94.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170588 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lto-streamer-in.c')
-rw-r--r--gcc/lto-streamer-in.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c
index 058885d2252..a87325835f2 100644
--- a/gcc/lto-streamer-in.c
+++ b/gcc/lto-streamer-in.c
@@ -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_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)
TREE_CHAIN (expr) = lto_input_chain (ib, data_in);
@@ -2179,24 +2181,19 @@ static void
lto_input_ts_block_tree_pointers (struct lto_input_block *ib,
struct data_in *data_in, tree expr)
{
- unsigned i, len;
-
- BLOCK_SOURCE_LOCATION (expr) = lto_input_location (ib, data_in);
+ /* Do not stream BLOCK_SOURCE_LOCATION. We cannot handle debug information
+ for early inlining so drop it on the floor instead of ICEing in
+ dwarf2out.c. */
BLOCK_VARS (expr) = lto_input_chain (ib, data_in);
- len = lto_input_uleb128 (ib);
- if (len > 0)
- {
- 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);
- }
- }
+ /* Do not stream BLOCK_NONLOCALIZED_VARS. We cannot handle debug information
+ for early inlining so drop it on the floor instead of ICEing in
+ dwarf2out.c. */
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_CHAIN (expr) = lto_input_tree (ib, data_in);
/* We re-compute BLOCK_SUBBLOCKS of our parent here instead