* toplev.c (check_global_declaration_1): Do not call assemble_external.
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Mar 2012 16:39:11 +0000 (16:39 +0000)
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Mar 2012 16:39:11 +0000 (16:39 +0000)
* 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
gcc/calls.c
gcc/expr.c
gcc/toplev.c

index c1628b7..bd53aff 100644 (file)
@@ -1,5 +1,12 @@
 2012-03-26  Steven Bosscher  <steven@gcc.gnu.org>
 
+       * 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.
 
index 19b2bfa..8c1e079 100644 (file)
@@ -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);
index f509bf0..c63343e 100644 (file)
@@ -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;
index 6656640..e01ed81 100644 (file)
@@ -486,7 +486,6 @@ check_global_declaration_1 (tree decl)
        warning (OPT_Wunused_function, "%q+F declared %<static%> 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 ();