diff options
| author | Kazu Hirata <kazu@cs.umass.edu> | 2004-01-28 05:27:12 +0000 |
|---|---|---|
| committer | Kazu Hirata <kazu@gcc.gnu.org> | 2004-01-28 05:27:12 +0000 |
| commit | 28b241764ff7466a8eacff6ebd766676ae998e9b (patch) | |
| tree | f6c26b6e59e668c476ca9ee9e210d54f8373f7d2 /gcc/config/c4x/c4x.c | |
| parent | 9184f8921b86b372e5dfef4097af21fa2f4ea26f (diff) | |
| download | gcc-28b241764ff7466a8eacff6ebd766676ae998e9b.zip gcc-28b241764ff7466a8eacff6ebd766676ae998e9b.tar.gz gcc-28b241764ff7466a8eacff6ebd766676ae998e9b.tar.bz2 | |
c4x.c (TARGET_ASM_EXTERNAL_LIBCALL): New.
* 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.
From-SVN: r76779
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 9a6b888..b389296 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); +} |
