re PR target/18442 (Rejects attribute((mode(SI))) when using -mint64)
2004-12-07 Eric Christopher <echristo@redhat.com> PR target/18442 * config/mips/mips.c (mips_vector_mode_supported_p): New function. (TARGET_SCALAR_MODE_SUPPORTED_P): Define to above. From-SVN: r91820
This commit is contained in:
parent
54e4aedb7e
commit
a122d1f1d3
|
@ -1,3 +1,9 @@
|
||||||
|
2004-12-07 Eric Christopher <echristo@redhat.com>
|
||||||
|
|
||||||
|
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 <kazu@cs.umass.edu>
|
2004-12-07 Kazu Hirata <kazu@cs.umass.edu>
|
||||||
|
|
||||||
* c-common.c, expr.c, fold-const.c, print-tree.c,
|
* c-common.c, expr.c, fold-const.c, print-tree.c,
|
||||||
|
|
|
@ -352,6 +352,7 @@ static bool mips_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode mode,
|
||||||
tree, bool);
|
tree, bool);
|
||||||
static bool mips_callee_copies (CUMULATIVE_ARGS *, enum machine_mode mode,
|
static bool mips_callee_copies (CUMULATIVE_ARGS *, enum machine_mode mode,
|
||||||
tree, bool);
|
tree, bool);
|
||||||
|
static bool mips_scalar_mode_supported_p (enum machine_mode);
|
||||||
static bool mips_vector_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_arg (enum insn_code, unsigned int, tree *);
|
||||||
static rtx mips_prepare_builtin_target (enum insn_code, unsigned int, rtx);
|
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
|
#undef TARGET_VECTOR_MODE_SUPPORTED_P
|
||||||
#define TARGET_VECTOR_MODE_SUPPORTED_P mips_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
|
#undef TARGET_INIT_BUILTINS
|
||||||
#define TARGET_INIT_BUILTINS mips_init_builtins
|
#define TARGET_INIT_BUILTINS mips_init_builtins
|
||||||
#undef TARGET_EXPAND_BUILTIN
|
#undef TARGET_EXPAND_BUILTIN
|
||||||
|
@ -7076,6 +7080,28 @@ mips_valid_pointer_mode (enum machine_mode mode)
|
||||||
return (mode == SImode || (TARGET_64BIT && mode == DImode));
|
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. */
|
/* Target hook for vector_mode_supported_p. */
|
||||||
static bool
|
static bool
|
||||||
mips_vector_mode_supported_p (enum machine_mode mode)
|
mips_vector_mode_supported_p (enum machine_mode mode)
|
||||||
|
|
Loading…
Reference in New Issue