diff options
Diffstat (limited to 'gcc/varpool.c')
-rw-r--r-- | gcc/varpool.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/varpool.c b/gcc/varpool.c index a540d03..39a6565 100644 --- a/gcc/varpool.c +++ b/gcc/varpool.c @@ -196,8 +196,6 @@ varpool_remove_node (struct varpool_node *node) } ipa_remove_all_references (&node->ref_list); ipa_remove_all_refering (&node->ref_list); - if (DECL_INITIAL (node->decl)) - DECL_INITIAL (node->decl) = error_mark_node; ggc_free (node); } @@ -302,7 +300,7 @@ varpool_mark_needed_node (struct varpool_node *node) } /* Reset the queue of needed nodes. */ -static void +void varpool_reset_queue (void) { varpool_last_needed_node = NULL; @@ -383,6 +381,8 @@ varpool_finalize_decl (tree decl) if (node->needed) varpool_enqueue_needed_node (node); node->finalized = true; + if (TREE_THIS_VOLATILE (decl)) + node->force_output = true; if (decide_is_variable_needed (node, decl)) varpool_mark_needed_node (node); |