re PR testsuite/61137 (FAIL: gcc.target/ia64/small-addr-1.c (test for excess errors))
authorJakub Jelinek <jakub@redhat.com>
Fri, 21 Nov 2014 13:28:58 +0000 (14:28 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 21 Nov 2014 13:28:58 +0000 (14:28 +0100)
PR target/61137
* config/ia64/ia64.c (ia64_attribute_takes_identifier_p): New function.
(TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P): Redefine to it.

From-SVN: r217919

gcc/ChangeLog
gcc/config/ia64/ia64.c

index 768b396d22bc30139b6c5d1cf633203a149f6cff..3470ae2272de562b05e27adba9f56823ff2231fa 100644 (file)
@@ -1,3 +1,9 @@
+2014-11-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/61137
+       * config/ia64/ia64.c (ia64_attribute_takes_identifier_p): New function.
+       (TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P): Redefine to it.
+
 2014-11-21  James Greenhalgh  <james.greenhalgh@arm.com>
 
        * config/aarch64/aarch64-simd.md
index f896e101c6bb28eadb3218d104995a3714740833..860b658ac5a556a990032e920aa15d8654104c85 100644 (file)
@@ -324,6 +324,7 @@ static bool ia64_vms_valid_pointer_mode (machine_mode mode)
 static tree ia64_vms_common_object_attribute (tree *, tree, tree, int, bool *)
      ATTRIBUTE_UNUSED;
 
+static bool ia64_attribute_takes_identifier_p (const_tree);
 static tree ia64_handle_model_attribute (tree *, tree, tree, int, bool *);
 static tree ia64_handle_version_id_attribute (tree *, tree, tree, int, bool *);
 static void ia64_encode_section_info (tree, rtx, int);
@@ -669,8 +670,26 @@ static const struct attribute_spec ia64_attribute_table[] =
 #undef TARGET_VECTORIZE_VEC_PERM_CONST_OK
 #define TARGET_VECTORIZE_VEC_PERM_CONST_OK ia64_vectorize_vec_perm_const_ok
 
+#undef TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P
+#define TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P ia64_attribute_takes_identifier_p
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 \f
+/* Returns TRUE iff the target attribute indicated by ATTR_ID takes a plain
+   identifier as an argument, so the front end shouldn't look it up.  */
+
+static bool
+ia64_attribute_takes_identifier_p (const_tree attr_id)
+{
+  if (is_attribute_p ("model", attr_id))
+    return true;
+#if TARGET_ABI_OPEN_VMS
+  if (is_attribute_p ("common_object", attr_id))
+    return true;
+#endif
+  return false;
+}
+
 typedef enum
   {
     ADDR_AREA_NORMAL,  /* normal address area */