aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorSteve Ellcey <sje@cup.hp.com>2007-08-06 18:04:33 +0000
committerSteve Ellcey <sje@gcc.gnu.org>2007-08-06 18:04:33 +0000
commita31fa2e0d3cab234ccb56fe5fdcfcf0efd3dee31 (patch)
treee151c60b4ea5b1cbb2251873802f3a9be0d5c1de /gcc/config
parentb441fbb053733e4c2d48d91a688b2f56cbd36359 (diff)
downloadgcc-a31fa2e0d3cab234ccb56fe5fdcfcf0efd3dee31.zip
gcc-a31fa2e0d3cab234ccb56fe5fdcfcf0efd3dee31.tar.gz
gcc-a31fa2e0d3cab234ccb56fe5fdcfcf0efd3dee31.tar.bz2
ia64.c (ia64_c_mode_for_suffix): New.
* config/ia64/ia64.c (ia64_c_mode_for_suffix): New. (TARGET_C_MODE_FOR_SUFFIX): New. From-SVN: r127247
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/ia64/ia64.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index cf70493..a556673 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -282,6 +282,7 @@ static const char *ia64_mangle_type (tree);
static const char *ia64_invalid_conversion (tree, tree);
static const char *ia64_invalid_unary_op (int, tree);
static const char *ia64_invalid_binary_op (int, tree, tree);
+static enum machine_mode ia64_c_mode_for_suffix (char);
/* Table of valid machine attributes. */
static const struct attribute_spec ia64_attribute_table[] =
@@ -485,6 +486,9 @@ static const struct attribute_spec ia64_attribute_table[] =
#undef TARGET_INVALID_BINARY_OP
#define TARGET_INVALID_BINARY_OP ia64_invalid_binary_op
+#undef TARGET_C_MODE_FOR_SUFFIX
+#define TARGET_C_MODE_FOR_SUFFIX ia64_c_mode_for_suffix
+
struct gcc_target targetm = TARGET_INITIALIZER;
typedef enum
@@ -9849,4 +9853,17 @@ ia64_handle_version_id_attribute (tree *node ATTRIBUTE_UNUSED,
return NULL_TREE;
}
+/* Target hook for c_mode_for_suffix. */
+
+static enum machine_mode
+ia64_c_mode_for_suffix (char suffix)
+{
+ if (suffix == 'q')
+ return TFmode;
+ if (suffix == 'w')
+ return XFmode;
+
+ return VOIDmode;
+}
+
#include "gt-ia64.h"