diff options
author | David Edelsohn <dje@gcc.gnu.org> | 2015-02-16 10:33:09 -0500 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2015-02-16 10:33:09 -0500 |
commit | 403697abae1166766b3e4681487a5dfcfef2ce52 (patch) | |
tree | 2dfbc0d9d2411f592462292e7384b57ff0438d0c /gcc | |
parent | 266c722fafc54178f854179003260053b11d00a3 (diff) | |
download | gcc-403697abae1166766b3e4681487a5dfcfef2ce52.zip gcc-403697abae1166766b3e4681487a5dfcfef2ce52.tar.gz gcc-403697abae1166766b3e4681487a5dfcfef2ce52.tar.bz2 |
[multiple changes]
2015-02-16 Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com>
David Edelsohn <dje.gcc@gmail.com>
PR target/65058
* config/rs6000/rs6000.c (rs6000_output_symbol_ref): Append storage
mapping class to external variable or function reference.
* config/rs6000/xcoff.h (ASM_OUTPUT_EXTERNAL): Do not append storage
mapping class.
2015-02-16 David Eelsohn <dje.gcc@gmail.com>
PR target/53348
* config/rs6000/rs6000.c (rs6000_declare_alias): Only use
ASM_WEAKEN_DECL if defined.
From-SVN: r220737
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 16 | ||||
-rw-r--r-- | gcc/config/rs6000/xcoff.h | 9 |
3 files changed, 31 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e049c99..04ac119 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2015-02-16 Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com> + David Edelsohn <dje.gcc@gmail.com> + + PR target/65058 + * config/rs6000/rs6000.c (rs6000_output_symbol_ref): Append storage + mapping class to external variable or function reference. + * config/rs6000/xcoff.h (ASM_OUTPUT_EXTERNAL): Do not append storage + mapping class. + +2015-02-16 David Eelsohn <dje.gcc@gmail.com> + + PR target/53348 + * config/rs6000/rs6000.c (rs6000_declare_alias): Only use + ASM_WEAKEN_DECL if defined. + 2015-02-16 Richard Biener <rguenther@suse.de> PR lto/65015 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 86ef0fe..e482547 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -26030,6 +26030,20 @@ rs6000_output_symbol_ref (FILE *file, rtx x) section. */ const char *name = XSTR (x, 0); + tree decl = SYMBOL_REF_DECL (x); + if (decl /* sync condition with assemble_external () */ + && DECL_P (decl) && DECL_EXTERNAL (decl) && TREE_PUBLIC (decl) + && (TREE_CODE (decl) == VAR_DECL + || TREE_CODE (decl) == FUNCTION_DECL) + && name[strlen (name) - 1] != ']') + { + name = concat (name, + (TREE_CODE (decl) == FUNCTION_DECL + ? "[DS]" : "[UA]"), + NULL); + XSTR (x, 0) = name; + } + if (VTABLE_NAME_P (name)) { RS6000_OUTPUT_BASENAME (file, name); @@ -30081,8 +30095,10 @@ rs6000_declare_alias (struct symtab_node *n, void *d) RS6000_OUTPUT_BASENAME (data->file, buffer); putc ('\n', data->file); } +#ifdef ASM_WEAKEN_DECL else if (DECL_WEAK (n->decl) && !data->function_descriptor) ASM_WEAKEN_DECL (data->file, n->decl, name, NULL); +#endif } else { diff --git a/gcc/config/rs6000/xcoff.h b/gcc/config/rs6000/xcoff.h index 6dc1207..db024fc 100644 --- a/gcc/config/rs6000/xcoff.h +++ b/gcc/config/rs6000/xcoff.h @@ -170,15 +170,6 @@ putc ('\n', FILE); \ fprintf(FILE, "\t.rename .%s,\".%s\"\n", buffer, NAME); \ } \ - if ((TREE_CODE (DECL) == VAR_DECL \ - || TREE_CODE (DECL) == FUNCTION_DECL) \ - && (NAME)[strlen (NAME) - 1] != ']') \ - { \ - XSTR (_symref, 0) = concat (XSTR (_symref, 0), \ - (TREE_CODE (DECL) == FUNCTION_DECL \ - ? "[DS]" : "[RW]"), \ - NULL); \ - } \ } /* This is how to output a reference to a user-level label named NAME. |