mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 12:00:03 -05:00
Patch to fix g++.other/local1.C.
* varasm.c (make_decl_rtl): Revert April 1 change. * alpha/alpha.h, alpha/win-nt.h, arm/arm.h, i386/unix.h, i960/i960.h, m68k/linux.h, pa/pa.h, sparc/sparc.h, vax/vax.h (ASM_OUTPUT_MI_THUNK): Get function name from the SYMBOL_REF in the DECL_RTL, not from DECL_ASSEMBLER_NAME. * i386/winnt.c (gen_stdcall_suffix): Comment for questionable use of DECL_ASSEMBLER_NAME. From-SVN: r19723
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
1998-05-13 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* varasm.c (make_decl_rtl): Revert April 1 change.
|
||||
* alpha/alpha.h, alpha/win-nt.h, arm/arm.h, i386/unix.h, i960/i960.h,
|
||||
m68k/linux.h, pa/pa.h, sparc/sparc.h, vax/vax.h (ASM_OUTPUT_MI_THUNK):
|
||||
Get function name from the SYMBOL_REF in the DECL_RTL, not from
|
||||
DECL_ASSEMBLER_NAME.
|
||||
* i386/winnt.c (gen_stdcall_suffix): Comment for questionable use of
|
||||
DECL_ASSEMBLER_NAME.
|
||||
|
||||
Wed May 13 13:09:19 1998 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* i386.c (notice_update_cc, output_float_compare): Disable
|
||||
|
||||
@@ -2121,7 +2121,7 @@ literal_section () \
|
||||
|
||||
#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
|
||||
do { \
|
||||
char *fn_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION)); \
|
||||
char *fn_name = XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0); \
|
||||
\
|
||||
fprintf (FILE, "\t.ent "); \
|
||||
assemble_name (FILE, alpha_function_name); \
|
||||
|
||||
@@ -139,7 +139,7 @@ Boston, MA 02111-1307, USA. */
|
||||
#undef ASM_OUTPUT_MI_THUNK
|
||||
#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
|
||||
do { \
|
||||
char *fn_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION)); \
|
||||
char *fn_name = XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0); \
|
||||
\
|
||||
fprintf (FILE, "\t.ent "); \
|
||||
assemble_name (FILE, alpha_function_name); \
|
||||
|
||||
@@ -1982,8 +1982,7 @@ do { \
|
||||
} \
|
||||
} \
|
||||
fputs ("\tb\t", FILE); \
|
||||
assemble_name (FILE, \
|
||||
IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fputc ('\n', FILE); \
|
||||
} while (0)
|
||||
|
||||
|
||||
@@ -179,15 +179,13 @@ do { \
|
||||
output_asm_insn (AS1 (pop%L0,%0), xops); \
|
||||
output_asm_insn ("addl $_GLOBAL_OFFSET_TABLE_+[.-%P1],%0", xops); \
|
||||
fprintf (FILE, "\tmovl "); \
|
||||
assemble_name \
|
||||
(FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fprintf (FILE, "@GOT(%%ebx),%%ecx\n\tpopl %%ebx\n\tjmp *%%ecx\n"); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
fprintf (FILE, "\tjmp "); \
|
||||
assemble_name \
|
||||
(FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fprintf (FILE, "\n"); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
@@ -37,6 +37,8 @@ gen_stdcall_suffix (decl)
|
||||
tree decl;
|
||||
{
|
||||
int total = 0;
|
||||
/* ??? This probably should use XSTR (XEXP (DECL_RTL (decl), 0), 0) instead
|
||||
of DECL_ASSEMBLER_NAME. */
|
||||
char *asmname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
|
||||
char *newsym;
|
||||
|
||||
|
||||
@@ -1568,7 +1568,6 @@ do { \
|
||||
fprintf (FILE, "\taddo r5,g0,g0\n"); \
|
||||
} \
|
||||
fprintf (FILE, "\tbx "); \
|
||||
assemble_name \
|
||||
(FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fprintf (FILE, "\n"); \
|
||||
} while (0);
|
||||
|
||||
@@ -375,15 +375,13 @@ do { \
|
||||
if (flag_pic) \
|
||||
{ \
|
||||
fprintf (FILE, "\tbra.l "); \
|
||||
assemble_name \
|
||||
(FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fprintf (FILE, "@PLTPC\n"); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
fprintf (FILE, "\tjmp "); \
|
||||
assemble_name \
|
||||
(FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fprintf (FILE, "\n"); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
@@ -1126,8 +1126,7 @@ extern enum cmp_type hppa_branch_type;
|
||||
#endif
|
||||
|
||||
#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
|
||||
{ char *my_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (THUNK_FNDECL)); \
|
||||
char *target_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION)); \
|
||||
{ char *target_name = XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0); \
|
||||
output_function_prologue (FILE, 0); \
|
||||
if (VAL_14_BITS_P (DELTA)) \
|
||||
fprintf (FILE, "\tb %s\n\tldo %d(%%r26),%%r26\n", target_name, DELTA); \
|
||||
|
||||
@@ -3075,25 +3075,21 @@ do { \
|
||||
fprintf (FILE, "\tadd %%o0,%d,%%o0\n", DELTA); \
|
||||
fprintf (FILE, "\tmov %%o7,%%g1\n"); \
|
||||
fprintf (FILE, "\tcall "); \
|
||||
assemble_name \
|
||||
(FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fprintf (FILE, ",0\n"); \
|
||||
} \
|
||||
else if (TARGET_CM_EMBMEDANY) \
|
||||
{ \
|
||||
fprintf (FILE, "\tsetx "); \
|
||||
assemble_name \
|
||||
(FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fprintf (FILE, ",%%g5,%%g1\n\tjmp %%g1\n"); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
fprintf (FILE, "\tsethi %%hi("); \
|
||||
assemble_name \
|
||||
(FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fprintf (FILE, "),%%g1\n\tjmp %%g1+%%lo("); \
|
||||
assemble_name \
|
||||
(FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fprintf (FILE, ")\n"); \
|
||||
} \
|
||||
if (!TARGET_CM_EMBMEDANY || flag_pic) \
|
||||
|
||||
@@ -1225,7 +1225,7 @@ do { \
|
||||
fprintf (FILE, "\t.word 0x0ffc\n"); \
|
||||
fprintf (FILE, "\taddl2 $%d,4(ap)\n", DELTA); \
|
||||
fprintf (FILE, "\tjmp "); \
|
||||
assemble_name (FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \
|
||||
fprintf (FILE, "+2\n"); \
|
||||
} while (0)
|
||||
|
||||
|
||||
10
gcc/varasm.c
10
gcc/varasm.c
@@ -741,16 +741,6 @@ make_decl_rtl (decl, asmspec, top_level)
|
||||
ASM_FORMAT_PRIVATE_NAME (label, name, var_labelno);
|
||||
name = obstack_copy0 (saveable_obstack, label, strlen (label));
|
||||
var_labelno++;
|
||||
|
||||
#if 0
|
||||
/* ??? This results in incorrect stabs debug info for static
|
||||
local variables. */
|
||||
/* We've changed the name by which this entity is
|
||||
known. In order that we can generate
|
||||
correct references to it, we update its
|
||||
DECL_ASSEMBLER_NAME. */
|
||||
DECL_ASSEMBLER_NAME (decl) = get_identifier (name);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (name == 0)
|
||||
|
||||
Reference in New Issue
Block a user