OSDN Git Service

2008-07-22 Rafael Avila de Espindola <espindola@google.com>
authorespindola <espindola@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Jul 2008 13:29:31 +0000 (13:29 +0000)
committerespindola <espindola@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Jul 2008 13:29:31 +0000 (13:29 +0000)
       * c-typeck.c (build_external_ref): Don't call assemble_external.
       * final.c (output_operand): Call assemble_external.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138057 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 951d263..4d05bef 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 dafce2a..a47d632 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 f27e430..787c43a 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