summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog10
-rw-r--r--gcc/cp/decl.c3
-rw-r--r--gcc/testsuite/g++.dg/ext/member-attr.C14
3 files changed, 25 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 10e84b49d77..3764b85c63b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2002-01-10 Ira Ruben <ira@apple.com>
+
+ * decl.c (start_method): Handle attrlist.
+
2002-01-10 Jakub Jelinek <jakub@redhat.com>
* decl2.c (max_tinst_depth): Increase default limit to 500.
@@ -288,6 +292,7 @@
2002-01-04 Jason Merrill <jason@redhat.com>
+ PR c++/4122
* class.c (update_vtable_entry_for_fn): Set delta to zero for a
lost primary.
@@ -427,6 +432,7 @@
2001-12-18 Jason Merrill <jason@redhat.com>
+ PR c++/3242
* class.c (add_method): Do compare 'this' quals when trying to match a
used function. Don't defer to another used function.
@@ -770,7 +776,7 @@ Tue Nov 27 09:03:47 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2001-11-25 Aldy Hernandez <aldyh@redhat.com>
- * cp/search.c (lookup_base_r): Declare bk in variable declaration
+ * search.c (lookup_base_r): Declare bk in variable declaration
space.
2001-11-25 Nathan Sidwell <nathan@codesourcery.com>
@@ -937,7 +943,7 @@ Tue Nov 27 09:03:47 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
2001-11-12 H.J. Lu <hjl@gnu.org>
- * cp/cvt.c (ocp_convert): Don't warn the address of a weak
+ * cvt.c (ocp_convert): Don't warn the address of a weak
function is always `true'.
2001-11-09 Neil Booth <neil@daikokuya.demon.co.uk>
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 9402a6c0f1b..944fe93161b 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -14173,6 +14173,9 @@ start_method (declspecs, declarator, attrlist)
if (fndecl == NULL_TREE)
return NULL_TREE;
+ if (attrlist)
+ cplus_decl_attributes (&fndecl, attrlist, 0);
+
/* Pass friends other than inline friend functions back. */
if (fndecl == void_type_node)
return fndecl;
diff --git a/gcc/testsuite/g++.dg/ext/member-attr.C b/gcc/testsuite/g++.dg/ext/member-attr.C
new file mode 100644
index 00000000000..3ba3ee84cf0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/member-attr.C
@@ -0,0 +1,14 @@
+/* Test to see if__attribute__'s are handled by inline member functions */
+/* { dg-do compile } */
+/* { dg-options "-fmessage-length=0" } */
+
+/* Previously __attribute__'s were handled by the grammar but "dropped
+ on the floor", these effectively ignoring them. This tests the fix
+ to see that they are now handled. In this test it should report
+ that we have an illegal attribute. */
+
+class T {
+ public:
+ __attribute__ ((garbage1)) void member1(int) {} /* { dg-error "`garbage1' attribute directive ignored" "" } */
+ void __attribute__ ((garbage2)) member2(int) {} /* { dg-error "`garbage2' attribute directive ignored" "" } */
+};