what you give them. Help stamp out software-hoarding! */
/* See target.h for a desciption of what this file contains and how to
- use it. */
+ use it.
-/* Both in tree.c. */
+ We want to have non-NULL default definitions of all hook functions,
+ even if they do nothing. */
+
+/* All in tree.c. */
#define TARGET_MERGE_DECL_ATTRIBUTES merge_decl_attributes
#define TARGET_MERGE_TYPE_ATTRIBUTES merge_type_attributes
-#define TARGET_VALID_DECL_ATTRIBUTE 0
-#define TARGET_VALID_TYPE_ATTRIBUTE 0
+#define TARGET_VALID_DECL_ATTRIBUTE default_valid_attribute_p
+#define TARGET_VALID_TYPE_ATTRIBUTE default_valid_attribute_p
/* The whole shebang. */
#define TARGET_INITIALIZER \
/* Given two types, merge their attributes and return the result. */
tree (* merge_type_attributes) PARAMS ((tree, tree));
- /* Nonzero if IDENTIFIER with arguments ARGS is a valid machine
+ /* Return nonzero if IDENTIFIER with arguments ARGS is a valid machine
specific attribute for DECL. The attributes in ATTRIBUTES have
previously been assigned to DECL. */
int (* valid_decl_attribute) PARAMS ((tree decl, tree attributes,
tree identifier, tree args));
- /* Nonzero if IDENTIFIER with arguments ARGS is a valid machine
+ /* Return nonzero if IDENTIFIER with arguments ARGS is a valid machine
specific attribute for TYPE. The attributes in ATTRIBUTES have
previously been assigned to TYPE. */
int (* valid_type_attribute) PARAMS ((tree type, tree attributes,