diff options
author | Jason Merrill <merrill@gnu.org> | 1997-07-15 02:12:38 +0000 |
---|---|---|
committer | Jason Merrill <merrill@gnu.org> | 1997-07-15 02:12:38 +0000 |
commit | 3e8d8d4bc73b803e0db6b6169d98981020ac4d30 (patch) | |
tree | 602e14bb70ad03ab07eeb019dc55221dfe540e66 | |
parent | 6373aa3ac1d8f5220f48f2b4bb23a70cb3b5b0d0 (diff) | |
download | gcc-3e8d8d4bc73b803e0db6b6169d98981020ac4d30.zip gcc-3e8d8d4bc73b803e0db6b6169d98981020ac4d30.tar.gz gcc-3e8d8d4bc73b803e0db6b6169d98981020ac4d30.tar.bz2 |
x
From-SVN: r14446
-rw-r--r-- | gcc/config/i960/i960.h | 20 |
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); |