c-typeck.c (build_external_ref): Don't call assemble_external.
authorRafael Avila de Espindola <espindola@google.com>
Tue, 22 Jul 2008 13:29:31 +0000 (13:29 +0000)
committerRafael Espindola <espindola@gcc.gnu.org>
Tue, 22 Jul 2008 13:29:31 +0000 (13:29 +0000)
2008-07-22  Rafael Avila de Espindola  <espindola@google.com>

       * c-typeck.c (build_external_ref): Don't call assemble_external.
       * final.c (output_operand): Call assemble_external.

From-SVN: r138057

gcc/ChangeLog
gcc/c-typeck.c
gcc/final.c

index 951d26375d1a7e4aa30181f5a12839b1ce97aa4d..4d05bef2957b09cf818bdf79cc8095389b1ecb6a 100644 (file)
@@ -1,3 +1,8 @@
+2008-07-22  Rafael Avila de Espindola  <espindola@google.com>
+
+       * c-typeck.c (build_external_ref): Don't call assemble_external.
+       * final.c (output_operand): Call assemble_external.
+
 2008-07-21  DJ Delorie  <dj@redhat.com>
 
        * config/h8300/h8300.c (h8300_hard_regno_scratch_ok): New.
index dafce2ac23c1d8573b922bf986040f524e2c8614..a47d632429347a4db13c21cfef70ed0c01611c72 100644 (file)
@@ -2191,8 +2191,6 @@ build_external_ref (tree id, int fun, location_t loc)
   /* Recursive call does not count as usage.  */
   if (ref != current_function_decl) 
     {
-      if (!skip_evaluation)
-       assemble_external (ref);
       TREE_USED (ref) = 1;
     }
 
index f27e430874126133f5a8a0ffe3ef42da8ee12640..787c43abad5aa9d860268c1e1ca0380026a60240 100644 (file)
@@ -3344,6 +3344,14 @@ output_operand (rtx x, int code ATTRIBUTE_UNUSED)
   gcc_assert (!x || !REG_P (x) || REGNO (x) < FIRST_PSEUDO_REGISTER);
 
   PRINT_OPERAND (asm_out_file, x, code);
+  if (x && MEM_P (x) && GET_CODE (XEXP (x, 0)) == SYMBOL_REF)
+    {
+      tree t;
+      x = XEXP (x, 0);
+      t = SYMBOL_REF_DECL (x);
+      if (t)
+       assemble_external (t);
+    }
 }
 
 /* Print a memory reference operand for address X