From b60e0910e44845bd4350f412f1c37939d811d643 Mon Sep 17 00:00:00 2001 From: echristo Date: Tue, 7 Dec 2004 22:17:21 +0000 Subject: [PATCH] 2004-12-07 Eric Christopher PR target/18442 * config/mips/mips.c (mips_vector_mode_supported_p): New function. (TARGET_SCALAR_MODE_SUPPORTED_P): Define to above. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91820 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/mips/mips.c | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 338cc630c5c..05d97362aa2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-12-07 Eric Christopher + + PR target/18442 + * config/mips/mips.c (mips_vector_mode_supported_p): New function. + (TARGET_SCALAR_MODE_SUPPORTED_P): Define to above. + 2004-12-07 Kazu Hirata * c-common.c, expr.c, fold-const.c, print-tree.c, diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 1b98eca3c81..990671ca260 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -352,6 +352,7 @@ static bool mips_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode mode, tree, bool); static bool mips_callee_copies (CUMULATIVE_ARGS *, enum machine_mode mode, tree, bool); +static bool mips_scalar_mode_supported_p (enum machine_mode); static bool mips_vector_mode_supported_p (enum machine_mode); static rtx mips_prepare_builtin_arg (enum insn_code, unsigned int, tree *); static rtx mips_prepare_builtin_target (enum insn_code, unsigned int, rtx); @@ -800,6 +801,9 @@ const struct mips_cpu_info mips_cpu_info_table[] = { #undef TARGET_VECTOR_MODE_SUPPORTED_P #define TARGET_VECTOR_MODE_SUPPORTED_P mips_vector_mode_supported_p +#undef TARGET_SCALAR_MODE_SUPPORTED_P +#define TARGET_SCALAR_MODE_SUPPORTED_P mips_scalar_mode_supported_p + #undef TARGET_INIT_BUILTINS #define TARGET_INIT_BUILTINS mips_init_builtins #undef TARGET_EXPAND_BUILTIN @@ -7076,6 +7080,28 @@ mips_valid_pointer_mode (enum machine_mode mode) return (mode == SImode || (TARGET_64BIT && mode == DImode)); } +/* Define this so that we can deal with a testcase like: + + char foo __attribute__ ((mode (SI))); + + then compiled with -mabi=64 and -mint64. We have no + 32-bit type at that point and so the default case + always fails. Instead of special casing everything + it's easier to accept SImode in this function and + then punt to the default which will work for all + of the cases where we deal with TARGET_64BIT, etc. */ +static bool +mips_scalar_mode_supported_p (enum machine_mode mode) +{ + /* We can always handle SImode. */ + if (mode == SImode) + return true; + else + return default_scalar_mode_supported_p (mode); + +} + + /* Target hook for vector_mode_supported_p. */ static bool mips_vector_mode_supported_p (enum machine_mode mode) -- 2.11.4.GIT