From dbc0f5939795f7f4da931891f0d840bc76eee6be Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 30 Oct 2008 23:36:30 +0100 Subject: [PATCH] s390.c (s390_mark_symbol_ref_as_used): New function. * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function. (s390_output_pool_entry): Call it through for_each_rtx. From-SVN: r141468 --- gcc/ChangeLog | 3 +++ gcc/config/s390/s390.c | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7b85230ae3..0ae09105ca7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2008-10-30 Jakub Jelinek + * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function. + (s390_output_pool_entry): Call it through for_each_rtx. + PR middle-end/37730 * expr.c (store_constructor): For vectors, if target is a MEM, use target's MEM_ALIAS_SET instead of elttype alias set. diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 45dae8bb20d..e64b58ca904 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -6664,6 +6664,24 @@ s390_chunkify_cancel (struct constant_pool *pool_list) } } +/* Helper rtx-iteration-function for s390_output_pool_entry. Marks + SYMBOL_REFs as referenced through use of assemble_external. */ + +static int +s390_mark_symbol_ref_as_used (rtx *x, void *dummy ATTRIBUTE_UNUSED) +{ + /* If we have a used symbol, we may have to emit assembly + annotations corresponding to whether the symbol is external, weak + or has non-default visibility. */ + if (GET_CODE (*x) == SYMBOL_REF) + { + tree t = SYMBOL_REF_DECL (*x); + if (t) + assemble_external (t); + return -1; + } + return 0; +} /* Output the constant pool entry EXP in mode MODE with alignment ALIGN. */ @@ -6684,6 +6702,7 @@ s390_output_pool_entry (rtx exp, enum machine_mode mode, unsigned int align) case MODE_INT: assemble_integer (exp, GET_MODE_SIZE (mode), align, 1); + for_each_rtx (&exp, s390_mark_symbol_ref_as_used, NULL); break; default: -- 2.30.2