From 6dd53648e913ea6ad55131ed0c8cc2709e9a3316 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 25 Aug 2004 17:24:37 -0700 Subject: target-def.h (TARGET_SCALAR_MODE_SUPPORTED_P): New. * target-def.h (TARGET_SCALAR_MODE_SUPPORTED_P): New. * target.h (struct gcc_target): Add scalar_mode_supported_p. * targhooks.c (default_scalar_mode_supported_p): New. * targhooks.h (default_scalar_mode_supported_p): Declare. * doc/tm.texi (TARGET_SCALAR_MODE_SUPPORTED_P): Document. * c-common.c (handle_mode_attribute): Query scalar_mode_supported_p before attempting to create types. Tidy. * expr.c (vector_mode_valid_p): Use scalar_mode_supported_p. * config/alpha/alpha.c (alpha_scalar_mode_supported_p): New. (TARGET_SCALAR_MODE_SUPPORTED_P): New. From-SVN: r86593 --- gcc/target.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'gcc/target.h') diff --git a/gcc/target.h b/gcc/target.h index 2c3798e..27e4086 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -381,7 +381,14 @@ struct gcc_target /* True if MODE is valid for a pointer in __attribute__((mode("MODE"))). */ bool (* valid_pointer_mode) (enum machine_mode mode); - /* True if MODE is valid for a vector. */ + /* True if MODE is valid for the target. By "valid", we mean able to + be manipulated in non-trivial ways. In particular, this means all + the arithmetic is supported. */ + bool (* scalar_mode_supported_p) (enum machine_mode mode); + + /* Similarly for vector modes. "Supported" here is less strict. At + least some operations are supported; need to check optabs or builtins + for further details. */ bool (* vector_mode_supported_p) (enum machine_mode mode); /* True if a vector is opaque. */ -- cgit v1.1