unix.h (ASM_OUTPUT_MI_THUNK): Define.
{att.h,bsd.h,sun386.h} (ASM_OUTPUT_MI_THUNK): Delete. From-SVN: r12010
This commit is contained in:
parent
e291fca1a3
commit
19a7047927
|
@ -93,14 +93,3 @@ do \
|
|||
#define ASM_OUTPUT_LABELREF(FILE,NAME) \
|
||||
fprintf (FILE, "%s", NAME)
|
||||
|
||||
/* Output code to add DELTA to the first argument, and then jump to FUNCTION.
|
||||
Used for C++ multiple inheritance. */
|
||||
|
||||
#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
|
||||
do { \
|
||||
fprintf (FILE, "\taddl $%d,%s\n\tjmp ", DELTA, \
|
||||
i386_regparm > 0 ? "%eax" : "4(%esp)"); \
|
||||
assemble_name (FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
fprintf (FILE, "\n"); \
|
||||
} while (0)
|
||||
|
||||
|
|
|
@ -123,18 +123,6 @@ Boston, MA 02111-1307, USA. */
|
|||
#define ASM_OUTPUT_LABELREF(FILE,NAME) fprintf (FILE, "_%s", NAME)
|
||||
#endif /* not NO_UNDERSCORES */
|
||||
|
||||
/* Output code to add DELTA to the first argument, and then jump to FUNCTION.
|
||||
Used for C++ multiple inheritance. */
|
||||
|
||||
#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
|
||||
do { \
|
||||
fprintf (FILE, "\taddl $%d,%s\n\tjmp ", DELTA, \
|
||||
i386_regparm > 0 ? "%eax" : "4(%esp)"); \
|
||||
assemble_name (FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
fprintf (FILE, "\n"); \
|
||||
} while (0)
|
||||
|
||||
|
||||
/* Sequent has some changes in the format of DBX symbols. */
|
||||
#define DBX_NO_XREFS 1
|
||||
|
||||
|
|
|
@ -141,14 +141,3 @@ do \
|
|||
|
||||
#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \
|
||||
fprintf (FILE, ".%s%d:\n", PREFIX, NUM)
|
||||
|
||||
/* Output code to add DELTA to the first argument, and then jump to FUNCTION.
|
||||
Used for C++ multiple inheritance. */
|
||||
|
||||
#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
|
||||
do { \
|
||||
fprintf (FILE, "\taddl $%d,%s\n\tjmp ", DELTA, \
|
||||
i386_regparm > 0 ? "%eax" : "4(%esp)"); \
|
||||
assemble_name (FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
|
||||
fprintf (FILE, "\n"); \
|
||||
} while (0)
|
||||
|
|
|
@ -146,3 +146,44 @@ Boston, MA 02111-1307, USA. */
|
|||
#define FUNCTION_VALUE_REGNO_P(N) \
|
||||
((N) == 0 || ((N)== FIRST_FLOAT_REG && TARGET_FLOAT_RETURNS_IN_80387))
|
||||
|
||||
/* Output code to add DELTA to the first argument, and then jump to FUNCTION.
|
||||
Used for C++ multiple inheritance. */
|
||||
#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \
|
||||
do { \
|
||||
tree parm; \
|
||||
\
|
||||
if (i386_regparm > 0) \
|
||||
parm = TYPE_ARG_TYPES (TREE_TYPE (function)); \
|
||||
else \
|
||||
parm = NULL_TREE; \
|
||||
for (; parm; parm = TREE_CHAIN (parm)) \
|
||||
if (TREE_VALUE (parm) == void_type_node) \
|
||||
break; \
|
||||
fprintf (FILE, "\taddl $%d,%s\n", DELTA, parm ? "%eax" : "4(%esp)"); \
|
||||
\
|
||||
if (flag_pic) \
|
||||
{ \
|
||||
rtx xops[2]; \
|
||||
xops[0] = pic_offset_table_rtx; \
|
||||
xops[1] = (rtx) gen_label_rtx (); \
|
||||
\
|
||||
if (i386_regparm > 2) \
|
||||
abort (); \
|
||||
output_asm_insn ("push%L0 %0", xops); \
|
||||
output_asm_insn (AS1 (call,%P1), xops); \
|
||||
ASM_OUTPUT_INTERNAL_LABEL (FILE, "L", CODE_LABEL_NUMBER (xops[1])); \
|
||||
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))); \
|
||||
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))); \
|
||||
fprintf (FILE, "\n"); \
|
||||
} \
|
||||
} while (0)
|
||||
|
|
Loading…
Reference in New Issue