aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <merrill@gnu.org>1997-07-15 02:12:38 +0000
committerJason Merrill <merrill@gnu.org>1997-07-15 02:12:38 +0000
commit3e8d8d4bc73b803e0db6b6169d98981020ac4d30 (patch)
tree602e14bb70ad03ab07eeb019dc55221dfe540e66
parent6373aa3ac1d8f5220f48f2b4bb23a70cb3b5b0d0 (diff)
downloadgcc-3e8d8d4bc73b803e0db6b6169d98981020ac4d30.zip
gcc-3e8d8d4bc73b803e0db6b6169d98981020ac4d30.tar.gz
gcc-3e8d8d4bc73b803e0db6b6169d98981020ac4d30.tar.bz2
x
From-SVN: r14446
-rw-r--r--gcc/config/i960/i960.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/config/i960/i960.h b/gcc/config/i960/i960.h
index 28d58ab..8d2e6c4 100644
--- a/gcc/config/i960/i960.h
+++ b/gcc/config/i960/i960.h
@@ -1538,3 +1538,23 @@ extern char *i960_output_move_quad ();
/* Defined in reload.c, and used in insn-recog.c. */
extern int rtx_equal_function_value_matters;
+
+/* 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 d = (DELTA); \
+ if (d < 0 && d > -32) \
+ fprintf (FILE, "\tsubo %d,g0,g0\n", -d); \
+ else if (d > 0 && d < 32) \
+ fprintf (FILE, "\taddo %d,g0,g0\n", d); \
+ else \
+ { \
+ fprintf (FILE, "\tldconst %d,r5\n", d); \
+ fprintf (FILE, "\taddo r5,g0,g0\n"); \
+ } \
+ fprintf (FILE, "\tbx "); \
+ assemble_name \
+ (FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \
+ fprintf (FILE, "\n"); \
+} while (0);