From ea259bbe1b2350126c466be7efb320d851aed253 Mon Sep 17 00:00:00 2001 From: steven Date: Mon, 26 Mar 2012 16:39:11 +0000 Subject: [PATCH] * toplev.c (check_global_declaration_1): Do not call assemble_external. * expr.c (emit_block_move_libcall_fn): Likewise. (clear_storage_libcall_fn): Likewise. (expand_expr_addr_expr_1): Likewise. (expand_expr_real_1): Likewise. * calls.c (rtx_for_function_call): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185813 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/calls.c | 7 +------ gcc/expr.c | 21 +++++---------------- gcc/toplev.c | 3 +-- 4 files changed, 14 insertions(+), 24 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c1628b7..bd53aff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2012-03-26 Steven Bosscher + * toplev.c (check_global_declaration_1): Do not call assemble_external. + * expr.c (emit_block_move_libcall_fn): Likewise. + (clear_storage_libcall_fn): Likewise. + (expand_expr_addr_expr_1): Likewise. + (expand_expr_real_1): Likewise. + * calls.c (rtx_for_function_call): Likewise. + * varasm.c (assemble_external): Assert this function is only called during or after expanding to RTL. diff --git a/gcc/calls.c b/gcc/calls.c index 19b2bfa..8c1e079 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1642,13 +1642,8 @@ rtx_for_function_call (tree fndecl, tree addr) /* Get the function to call, in the form of RTL. */ if (fndecl) { - /* If this is the first use of the function, see if we need to - make an external definition for it. */ if (!TREE_USED (fndecl) && fndecl != current_function_decl) - { - assemble_external (fndecl); - TREE_USED (fndecl) = 1; - } + TREE_USED (fndecl) = 1; /* Get a SYMBOL_REF rtx for the function address. */ funexp = XEXP (DECL_RTL (fndecl), 0); diff --git a/gcc/expr.c b/gcc/expr.c index f509bf0..c63343e 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -1375,8 +1375,7 @@ emit_block_move_via_libcall (rtx dst, rtx src, rtx size, bool tailcall) } /* A subroutine of emit_block_move_via_libcall. Create the tree node - for the function we use for block copies. The first time FOR_CALL - is true, we call assemble_external. */ + for the function we use for block copies. */ static GTY(()) tree block_move_fn; @@ -1419,7 +1418,6 @@ emit_block_move_libcall_fn (int for_call) { emitted_extern = true; make_decl_rtl (block_move_fn); - assemble_external (block_move_fn); } return block_move_fn; @@ -2747,8 +2745,7 @@ set_storage_via_libcall (rtx object, rtx size, rtx val, bool tailcall) } /* A subroutine of set_storage_via_libcall. Create the tree node - for the function we use for block clears. The first time FOR_CALL - is true, we call assemble_external. */ + for the function we use for block clears. */ tree block_clear_fn; @@ -2791,7 +2788,6 @@ clear_storage_libcall_fn (int for_call) { emitted_extern = true; make_decl_rtl (block_clear_fn); - assemble_external (block_clear_fn); } return block_clear_fn; @@ -7413,11 +7409,8 @@ expand_expr_addr_expr_1 (tree exp, rtx target, enum machine_mode tmode, result = XEXP (result, 0); /* ??? Is this needed anymore? */ - if (DECL_P (exp) && !TREE_USED (exp) == 0) - { - assemble_external (exp); - TREE_USED (exp) = 1; - } + if (DECL_P (exp)) + TREE_USED (exp) = 1; if (modifier != EXPAND_INITIALIZER && modifier != EXPAND_CONST_ADDRESS @@ -9012,11 +9005,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, /* Ensure variable marked as used even if it doesn't go through a parser. If it hasn't be used yet, write out an external definition. */ - if (! TREE_USED (exp)) - { - assemble_external (exp); - TREE_USED (exp) = 1; - } + TREE_USED (exp) = 1; /* Show we haven't gotten RTL for this yet. */ temp = 0; diff --git a/gcc/toplev.c b/gcc/toplev.c index 6656640..e01ed81 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -486,7 +486,6 @@ check_global_declaration_1 (tree decl) warning (OPT_Wunused_function, "%q+F declared % but never defined", decl); /* This symbol is effectively an "extern" declaration now. */ TREE_PUBLIC (decl) = 1; - assemble_external (decl); } /* Warn about static fns or vars defined but not used. */ @@ -591,7 +590,7 @@ compile_file (void) output_shared_constant_pool (); output_object_blocks (); - finish_tm_clone_pairs (); + finish_tm_clone_pairs (); /* Write out any pending weak symbol declarations. */ weak_finish (); -- 2.7.4