diff options
author | Mark Mitchell <mark@codesourcery.com> | 2002-10-18 23:35:40 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2002-10-18 23:35:40 +0000 |
commit | 483ab821df8b418706ca1763088b1f2f9171fc16 (patch) | |
tree | 17088ab6800bbdff9c6f83a72299fa33aada4853 /gcc/config/i960 | |
parent | 90e021a061203481abb6d80e59e3b83ac26fb05d (diff) | |
download | gcc-483ab821df8b418706ca1763088b1f2f9171fc16.zip gcc-483ab821df8b418706ca1763088b1f2f9171fc16.tar.gz gcc-483ab821df8b418706ca1763088b1f2f9171fc16.tar.bz2 |
target-def.h (TARGET_ASM_OUTPUT_MI_THUNK): Default to NULL.
* target-def.h (TARGET_ASM_OUTPUT_MI_THUNK): Default to NULL.
(TARGET_ASM_OUTPUT_MI_VCALL_THUNK): Likewise.
(TARGET_ASM_OUT): Add them.
* target.h (asm_out): Add output_mi_thunk and
output_mi_vcall_thunk.
* config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/arm/arm-protos.h (arm_output_mi_thunk): Declare.
* config/arm/arm.c (arm_output_mi_thunk): Define.
* config/arm/arm.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/cris/cris.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/frv/frv.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/i386/i386-protos.h (x86_output_mi_thunk): Adjust
prototype.
(x86_output_mi_vcall_thunk): Declare.
* config/i386/i386.c (override_options): Clear
output_mi_vcall_thunk in 64-bit mode.
(ix86_fntype_regparm): New function.
(ix86_return_pops_args): Use it.
(ia32_this_parameter): New function.
(x86_output_mi_vcall_thunk): New function.
(x86_output_mi_thunk): Use it
* config/i386/unix.h (TARGET_ASM_OUTPUT_MI_THUNK): Adjust.
(TARGET_ASM_OUTPUT_MI_VCALL_THUNK): Define.
* config/i960/i960-protos.h (i960_output_mi_thunk): Declare.
* config/i960/i960.c (i960_output_mi_thunk): New function.
* config/i960/i960.h (ASM_OUTPUT_MI_THUNK): Adjust.
* config/ia64/ia64-protos.h (ia64_output_mi_thunk): Declare.
* config/ia64/ia64.c (ia64_output_mi_thunk): Define.
* config/ia64/ia64.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/m68k/m68k-protos.h (m68k_output_mi_thunk): New function.
* config/m68k/linux.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/m68k/netbsd-elf.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/mmix/mmix.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/pa/pa.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/rs6000/sysv4.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/s390/s390-protos.h (s390_output_mi_thunk): Declare.
* config/s390/s390.c (s390_output_mi_thunk): Define.
* config/s390/s390.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/sparc/sparc.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/stormy16/stormy16.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* config/vax/vax-protos.h (vax_output_mi_thunk): Declare.
* config/vax/vax.c (vax_output_mi_thunk): Define.
* config/vax/vax.h (ASM_OUTPUT_MI_THUNK): Rename to ...
(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
* doc/tm.texi: Adjust documentation.
From-SVN: r58293
Diffstat (limited to 'gcc/config/i960')
-rw-r--r-- | gcc/config/i960/i960-protos.h | 1 | ||||
-rw-r--r-- | gcc/config/i960/i960.c | 22 | ||||
-rw-r--r-- | gcc/config/i960/i960.h | 17 |
3 files changed, 24 insertions, 16 deletions
diff --git a/gcc/config/i960/i960-protos.h b/gcc/config/i960/i960-protos.h index 7e2685d..b7b74dc 100644 --- a/gcc/config/i960/i960-protos.h +++ b/gcc/config/i960/i960-protos.h @@ -86,6 +86,7 @@ extern void i960_setup_incoming_varargs PARAMS ((CUMULATIVE_ARGS *, enum machine extern tree i960_build_va_list PARAMS ((void)); extern int i960_final_reg_parm_stack_space PARAMS ((int, tree)); extern int i960_reg_parm_stack_space PARAMS ((tree)); +extern void i960_output_mi_thunk PARAMS ((FILE *, tree, int, tree)); #endif /* TREE_CODE */ extern int process_pragma PARAMS ((int(*)(void), void(*)(int), const char *)); diff --git a/gcc/config/i960/i960.c b/gcc/config/i960/i960.c index 4917ae2..fe38d45 100644 --- a/gcc/config/i960/i960.c +++ b/gcc/config/i960/i960.c @@ -2824,3 +2824,25 @@ i960_scan_opcode (p) break; } } + +void +i960_output_mi_thunk (file, thunk, delta, function) + FILE *file; + tree thunk ATTRIBUTE_UNUSED; + int delta; + tree function; +{ + 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, XSTR (XEXP (DECL_RTL (function), 0), 0)); + fprintf (file, "\n"); +} diff --git a/gcc/config/i960/i960.h b/gcc/config/i960/i960.h index ee27398..11932e9 100644 --- a/gcc/config/i960/i960.h +++ b/gcc/config/i960/i960.h @@ -1466,19 +1466,4 @@ 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, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \ - fprintf (FILE, "\n"); \ -} while (0); +#define ASM_OUTPUT_MI_THUNK i960_output_mi_thunk |