From 1c7b11d2a3e5dfb6e1b4e11f098bf4e42ffdf88f Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Fri, 3 Sep 2010 14:26:24 +0200 Subject: [PATCH] re PR lto/44812 (m32 lto produces non-relocatable subtraction expression errors) PR lto/44812 * lto-cgraph.c (intput_node, input_varpool_node): Set DECL_EXTERNAL on functions/variables in other partition. From-SVN: r163811 --- gcc/ChangeLog | 6 ++++++ gcc/lto-cgraph.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 612e0205399d..cf3a172ea66d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-09-03 Jan Hubicka + + PR lto/44812 + * lto-cgraph.c (intput_node, input_varpool_node): Set DECL_EXTERNAL + on functions/variables in other partition. + 2010-09-03 Jan Hubicka * cgraph.h (struct varpool_node): Add const_value_known. diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c index dac5c3218149..78c809b55209 100644 --- a/gcc/lto-cgraph.c +++ b/gcc/lto-cgraph.c @@ -953,6 +953,11 @@ input_overwrite_node (struct lto_file_decl_data *file_data, node->lowered = bp_unpack_value (bp, 1); node->analyzed = tag == LTO_cgraph_analyzed_node; node->in_other_partition = bp_unpack_value (bp, 1); + if (node->in_other_partition) + { + DECL_EXTERNAL (node->decl) = 1; + TREE_STATIC (node->decl) = 0; + } node->alias = bp_unpack_value (bp, 1); node->finalized_by_frontend = bp_unpack_value (bp, 1); node->frequency = (enum node_frequency)bp_unpack_value (bp, 2); @@ -1111,6 +1116,11 @@ input_varpool_node (struct lto_file_decl_data *file_data, node->analyzed = node->finalized; node->used_from_other_partition = bp_unpack_value (&bp, 1); node->in_other_partition = bp_unpack_value (&bp, 1); + if (node->in_other_partition) + { + DECL_EXTERNAL (node->decl) = 1; + TREE_STATIC (node->decl) = 0; + } aliases_p = bp_unpack_value (&bp, 1); if (node->finalized) varpool_mark_needed_node (node);