(ASM_EMIT_MI_THUNK): Define.

From-SVN: r11861
This commit is contained in:
Jason Merrill 1996-04-21 16:29:26 +00:00
parent acbdd7dd67
commit c94b317945
1 changed files with 14 additions and 0 deletions

View File

@ -2946,6 +2946,20 @@ do { \
#define ASM_OUTPUT_IDENT(FILE, NAME) \
fprintf (FILE, "\t%s\t\"%s\"\n", IDENT_ASM_OP, 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 { \
int big_delta = (DELTA) >= 4096 || (DELTA) < -4096; \
if (big_delta) \
fprintf (FILE, "\tset %d,%%g1\n\tadd %%o0,%%g1,%%o0\n", DELTA); \
fprintf (FILE, "\tset "); \
assemble_name (FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
fprintf (FILE, ",%%g1\n\tjmp %%g1\n");\
if (big_delta) fprintf (FILE, "\tnop\n"); \
else fprintf (FILE, "\tadd %%o0,%d,%%o0\n", DELTA); \
} while (0)
/* Define the parentheses used to group arithmetic operations
in assembler code. */