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>
|
||||
|
||||
* 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);
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user