From: Ira Ruben Date: Thu, 10 Jan 2002 15:57:24 +0000 (-0500) Subject: * decl.c (start_method): Handle attrlist. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=195a5def1cd526aa9160c33f54d9c4103d01dd79;p=gcc.git * decl.c (start_method): Handle attrlist. From-SVN: r48730 --- 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 + + * decl.c (start_method): Handle attrlist. + 2002-01-10 Jakub Jelinek * decl2.c (max_tinst_depth): Increase default limit to 500. @@ -288,6 +292,7 @@ 2002-01-04 Jason Merrill + 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 + 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 2001-11-25 Aldy Hernandez - * 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 @@ -937,7 +943,7 @@ Tue Nov 27 09:03:47 2001 Richard Kenner 2001-11-12 H.J. Lu - * 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 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" "" } */ +};