diff options
author | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-28 05:27:12 +0000 |
---|---|---|
committer | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-28 05:27:12 +0000 |
commit | ec618ada42770de438fdda1f2ae7571965899063 (patch) | |
tree | f6c26b6e59e668c476ca9ee9e210d54f8373f7d2 /gcc/config/c4x/c4x.c | |
parent | 21be8eeec279c46d70d796f96936e7ab23ea2fc0 (diff) | |
download | gcc-ec618ada42770de438fdda1f2ae7571965899063.tar.gz |
* config/c4x/c4x.c (TARGET_ASM_EXTERNAL_LIBCALL): New.
(TARGET_STRUCT_VALUE_RTX): Likewise.
(c4x_external_libcall): Likewise.
(c4x_struct_value_rtx): Likewise.
* config/c4x/c4x.h: Remove.
(STRUCT_VALUE_REGNUM): Likewise.
(ASM_OUTPUT_EXTERNAL_LIBCALL): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76779 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/c4x/c4x.c')
-rw-r--r-- | gcc/config/c4x/c4x.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/gcc/config/c4x/c4x.c b/gcc/config/c4x/c4x.c index 9a6b88832e1..b389296f13b 100644 --- a/gcc/config/c4x/c4x.c +++ b/gcc/config/c4x/c4x.c @@ -1,5 +1,5 @@ /* Subroutines for assembler code output on the TMS320C[34]x - Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003 + Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz) @@ -200,6 +200,8 @@ static void c4x_globalize_label (FILE *, const char *); static bool c4x_rtx_costs (rtx, int, int, int *); static int c4x_address_cost (rtx); static void c4x_init_libfuncs (void); +static void c4x_external_libcall (rtx); +static rtx c4x_struct_value_rtx (tree, int); /* Initialize the GCC target structure. */ #undef TARGET_ASM_BYTE_OP @@ -215,6 +217,9 @@ static void c4x_init_libfuncs (void); #undef TARGET_ASM_FILE_END #define TARGET_ASM_FILE_END c4x_file_end +#undef TARGET_ASM_EXTERNAL_LIBCALL +#define TARGET_ASM_EXTERNAL_LIBCALL c4x_external_libcall + #undef TARGET_ATTRIBUTE_TABLE #define TARGET_ATTRIBUTE_TABLE c4x_attribute_table @@ -244,6 +249,9 @@ static void c4x_init_libfuncs (void); #undef TARGET_INIT_LIBFUNCS #define TARGET_INIT_LIBFUNCS c4x_init_libfuncs +#undef TARGET_STRUCT_VALUE_RTX +#define TARGET_STRUCT_VALUE_RTX c4x_struct_value_rtx + struct gcc_target targetm = TARGET_INITIALIZER; /* Override command line options. @@ -5017,3 +5025,21 @@ c4x_rtx_costs (rtx x, int code, int outer_code, int *total) return false; } } + +/* Worker function for TARGET_ASM_EXTERNAL_LIBCALL. */ + +static void +c4x_external_libcall (rtx fun) +{ + /* This is only needed to keep asm30 happy for ___divqf3 etc. */ + c4x_external_ref (XSTR (fun, 0)); +} + +/* Worker function for TARGET_STRUCT_VALUE_RTX. */ + +static rtx +c4x_struct_value_rtx (tree fntype ATTRIBUTE_UNUSED, + int incoming ATTRIBUTE_UNUSED) +{ + return gen_rtx_REG (Pmode, AR0_REGNO); +} |