x
authorJason Merrill <merrill@gnu.org>
Tue, 15 Jul 1997 02:12:38 +0000 (02:12 +0000)
committerJason Merrill <merrill@gnu.org>
Tue, 15 Jul 1997 02:12:38 +0000 (02:12 +0000)
From-SVN: r14446

gcc/config/i960/i960.h

index 28d58ab7b71369ff7455d3a8a36b405fc61ad3ef..8d2e6c42d7d577fce8fcfdf1be03a1e526e7644e 100644 (file)
@@ -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);