Commit 403697ab by David Edelsohn

[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
parent 266c722f
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
......
......@@ -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
{
......@@ -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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment