summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorespindola <espindola@138bc75d-0d04-0410-961f-82ee72b054a4>2008-07-22 13:29:31 +0000
committerespindola <espindola@138bc75d-0d04-0410-961f-82ee72b054a4>2008-07-22 13:29:31 +0000
commit45a9206a1ec1f7448e1923aa70e9a6c999294939 (patch)
tree4f5e14aa862d2a03cd920142d392ac2c21a6b6a5
parent57ce2f6858aed190c9e0b0d19bc4797ef3881312 (diff)
downloadgcc-45a9206a1ec1f7448e1923aa70e9a6c999294939.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138057 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c-typeck.c2
-rw-r--r--gcc/final.c8
3 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 951d26375d1..4d05bef2957 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index dafce2ac23c..a47d6324293 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -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;
}
diff --git a/gcc/final.c b/gcc/final.c
index f27e4308741..787c43abad5 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -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