aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-common.c
diff options
context:
space:
mode:
authorBrendan Kehoe <brendan@gcc.gnu.org>1998-02-18 05:38:57 -0500
committerBrendan Kehoe <brendan@gcc.gnu.org>1998-02-18 05:38:57 -0500
commitd9525bec09ede003c7bf29bc0ceef27ec083e4a9 (patch)
tree0c6d9928460c8ea947b19cb363645ecf536b2a56 /gcc/c-common.c
parentf9a366acb519c4d2652cac65d3644030b2223e28 (diff)
downloadgcc-d9525bec09ede003c7bf29bc0ceef27ec083e4a9.zip
gcc-d9525bec09ede003c7bf29bc0ceef27ec083e4a9.tar.gz
gcc-d9525bec09ede003c7bf29bc0ceef27ec083e4a9.tar.bz2
tree.h (merge_machine_{type,decl}_attributes): Declare.
./ChangeLog: * tree.h (merge_machine_{type,decl}_attributes): Declare. (split_specs_attrs, strip_attrs): Add prototypes. * tree.c (merge_machine_{type,decl}_attributes): New functions. * c-decl.c (duplicate_decls): Call merge_machine_decl_attributes. Update olddecl's attributes too. * c-common.c (strip_attrs): New function. * c-typeck.c (common_type): Call merge_machine_type_attributes. * varasm.c (make_function_rtl): New target macro REDO_SECTION_INFO_P. (make_decl_rtl): Likewise. * c-decl.c (shadow_tag_warned): Call split_specs_attrs. ./cp/ChangeLog: * decl.c (duplicate_decls): Call merge_machine_decl_attributes. Update olddecl's attributes too. (strip_attrs): Remove function. * typeck.c (common_type): Call merge_machine_type_attributes. From-SVN: r18065
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r--gcc/c-common.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 0feb611..ef5f691 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -928,6 +928,30 @@ split_specs_attrs (specs_attrs, declspecs, prefix_attributes)
*declspecs = specs;
*prefix_attributes = attrs;
}
+
+/* Strip attributes from SPECS_ATTRS, a list of declspecs and attributes.
+ This function is used by the parser when a rule will accept attributes
+ in a particular position, but we don't want to support that just yet.
+
+ A warning is issued for every ignored attribute. */
+
+tree
+strip_attrs (specs_attrs)
+ tree specs_attrs;
+{
+ tree specs, attrs;
+
+ split_specs_attrs (specs_attrs, &specs, &attrs);
+
+ while (attrs)
+ {
+ warning ("`%s' attribute ignored",
+ IDENTIFIER_POINTER (TREE_PURPOSE (attrs)));
+ attrs = TREE_CHAIN (attrs);
+ }
+
+ return specs;
+}
/* Check a printf/fprintf/sprintf/scanf/fscanf/sscanf format against
a parameter list. */