aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/mips
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-10-29 18:02:49 -0800
committerRichard Henderson <rth@gcc.gnu.org>2003-10-29 18:02:49 -0800
commitc35d187fc31fdd5836d1acb13e29a03537d22b46 (patch)
treede282819f47f9d9172dff72434c1129a8147296c /gcc/config/mips
parent12d104a2b9c2bcb0e85cd0289dc7616422d55753 (diff)
downloadgcc-c35d187fc31fdd5836d1acb13e29a03537d22b46.zip
gcc-c35d187fc31fdd5836d1acb13e29a03537d22b46.tar.gz
gcc-c35d187fc31fdd5836d1acb13e29a03537d22b46.tar.bz2
builtins.c (std_build_builtin_va_list): New.
* builtins.c (std_build_builtin_va_list): New. * expr.h (std_build_builtin_va_list): Declare. * defaults.h (BUILD_VA_LIST_TYPE): New. * system.h (BUILD_VA_LIST_TYPE): Poison. * target-def.h (TARGET_BUILD_BUILTIN_VA_LIST): New. * target.h (struct gcc_target): Add build_builtin_va_list. * tree.c (build_common_tree_nodes_2): Use it. * config/alpha/alpha-protos.h, config/alpha/alpha.c, config/alpha/alpha.h, config/alpha/unicosmk.h, config/d30v/d30v-protos.h, config/d30v/d30v.c, config/d30v/d30v.h, config/i386/i386-protos.h, config/i386/i386.c, config/i386/i386.h, config/i860/i860-protos.h, config/i860/i860.c, config/i860/i860.h, config/i960/i960-protos.h, config/i960/i960.c, config/i960/i960.h, config/mips/iris6.h, config/mips/mips-protos.h, config/mips/mips.c, config/mips/mips.h, config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/s390/s390-protos.h, config/s390/s390.c, config/s390/s390.h, config/sh/sh-protos.h, config/sh/sh.c, config/sh/sh.h, config/xtensa/xtensa-protos.h, config/xtensa/xtensa.c, config/xtensa/xtensa.h: Rename foo_build_va_list to foo_build_builtin_va_list; make it static. Define TARGET_BUILD_BUILTIN_VA_LIST. Remove BUILD_VA_LIST_TYPE. Update protos. * config/i386/i386.c (ix86_expand_carry_flag_compare): Make static. * config/iq2000/iq2000.h (BUILD_VA_LIST_TYPE): Remove. From-SVN: r73076
Diffstat (limited to 'gcc/config/mips')
-rw-r--r--gcc/config/mips/iris6.h6
-rw-r--r--gcc/config/mips/mips-protos.h1
-rw-r--r--gcc/config/mips/mips.c19
-rw-r--r--gcc/config/mips/mips.h4
4 files changed, 15 insertions, 15 deletions
diff --git a/gcc/config/mips/iris6.h b/gcc/config/mips/iris6.h
index d708bcf..ca8f428 100644
--- a/gcc/config/mips/iris6.h
+++ b/gcc/config/mips/iris6.h
@@ -423,12 +423,6 @@ while (0)
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
-/* Define the `__builtin_va_list' type for the ABI. On IRIX 6, this
- type is `char *'. */
-#undef BUILD_VA_LIST_TYPE
-#define BUILD_VA_LIST_TYPE(VALIST) \
- (VALIST) = build_pointer_type (char_type_node)
-
#undef ASM_DECLARE_OBJECT_NAME
#define ASM_DECLARE_OBJECT_NAME mips_declare_object_name
diff --git a/gcc/config/mips/mips-protos.h b/gcc/config/mips/mips-protos.h
index 2e31138..73b1bc4 100644
--- a/gcc/config/mips/mips-protos.h
+++ b/gcc/config/mips/mips-protos.h
@@ -84,7 +84,6 @@ extern bool mips_pad_arg_upward (enum machine_mode, tree);
extern bool mips_pad_reg_upward (enum machine_mode, tree);
extern int mips_setup_incoming_varargs (const CUMULATIVE_ARGS *,
enum machine_mode, tree, int);
-extern tree mips_build_va_list (void);
extern void mips_va_start (tree, rtx);
extern struct rtx_def *mips_va_arg (tree, tree);
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index db087f1..d85a83d 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -275,6 +275,7 @@ static int mips_adjust_cost (rtx, rtx, rtx, int);
static int mips_issue_rate (void);
static int mips_use_dfa_pipeline_interface (void);
static void mips_init_libfuncs (void);
+static tree mips_build_builtin_va_list (void);
#if TARGET_IRIX
static void irix_asm_named_section_1 (const char *, unsigned int,
@@ -792,6 +793,9 @@ const struct mips_cpu_info mips_cpu_info_table[] = {
#undef TARGET_INIT_LIBFUNCS
#define TARGET_INIT_LIBFUNCS mips_init_libfuncs
+#undef TARGET_BUILD_BUILTIN_VA_LIST
+#define TARGET_BUILD_BUILTIN_VA_LIST mips_build_builtin_va_list
+
struct gcc_target targetm = TARGET_INITIALIZER;
/* Return true if RELOC is a valid relocation number and OFFSET can be
@@ -3982,9 +3986,8 @@ mips_setup_incoming_varargs (const CUMULATIVE_ARGS *cum,
and two offsets, although we could have designed this with two pointers
and three offsets. */
-
-tree
-mips_build_va_list (void)
+static tree
+mips_build_builtin_va_list (void)
{
if (EABI_FLOAT_VARARGS_P)
{
@@ -4028,7 +4031,15 @@ mips_build_va_list (void)
return record;
}
else
- return ptr_type_node;
+ {
+#if defined(TARGET_IRIX) && !TARGET_IRIX5
+ /* On IRIX 6, this type is 'char *'. */
+ return build_pointer_type (char_type_node);
+#else
+ /* Otherwise, we use 'void *'. */
+ return ptr_type_node;
+#endif
+ }
}
/* Implement va_start. */
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 1b51913..a27dae3 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -2412,10 +2412,6 @@ typedef struct mips_args {
: ((LOC) + 15) & ~15)
-/* Define the `__builtin_va_list' type for the ABI. */
-#define BUILD_VA_LIST_TYPE(VALIST) \
- (VALIST) = mips_build_va_list ()
-
/* Implement `va_start' for varargs and stdarg. */
#define EXPAND_BUILTIN_VA_START(valist, nextarg) \
mips_va_start (valist, nextarg)