public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/103365] [12 Regression] ICE in register_scoped_attribute, with attribute starting with underscore: -Wno-attributes=n::_a or #pragma GCC diagnostic ignored_attributes "n::_a" Date: Wed, 24 Nov 2021 09:09:29 +0000 [thread overview] Message-ID: <bug-103365-4-DffomJBMFe@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-103365-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103365 --- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>: https://gcc.gnu.org/g:709716b9f49f2fcf46f319000562cf6e61bd2f71 commit r12-5493-g709716b9f49f2fcf46f319000562cf6e61bd2f71 Author: Jakub Jelinek <jakub@redhat.com> Date: Wed Nov 24 10:08:35 2021 +0100 attribs: Fix ICEs on attributes starting with _ [PR103365] As the patch shows, we have quite a few asserts that we don't call lookup_attribute etc. with attr_name that starts with an underscore, to make sure nobody is trying to call it with non-canonicalized attribute name like "__cold__" instead of "cold". We canonicalize only attributes that start with 2 underscores and end with 2 underscores though. Before Marek's patch, that wasn't an issue, we had no attributes like "_foo" or "__bar_" etc., so lookup_scoped_attribute_spec would always return NULL for those and we wouldn't try to register them, look them up etc., just with -Wattributes would warn about them. But now, as the new testcases show, users can actually request such attributes to be ignored, and we ICE for those during register_scoped_attribute and when that is fixed, ICE later on when somebody uses those attributes because they will be looked up to find out that they should be ignored. So, the following patch instead of or in addition to, depending on how performance sensitive a particular spot is, checking that attribute doesn't start with underscore allows attribute names that start with underscore as long as it doesn't canonicalize (i.e. doesn't start and end with 2 underscores). In addition to that, I've noticed lookup_attribute_by_prefix was calling get_attribute_name twice unnecessarily, and 2 tests were running in c++98 mode with -std=c++98 -std=c++11 which IMHO isn't useful because -std=c++11 testing is done too when testing all language versions. 2021-11-24 Jakub Jelinek <jakub@redhat.com> PR middle-end/103365 * attribs.h (lookup_attribute): Allow attr_name to start with underscore, as long as canonicalize_attr_name returns false. (lookup_attribute_by_prefix): Don't call get_attribute_name twice. * attribs.c (extract_attribute_substring): Reimplement using canonicalize_attr_name. (register_scoped_attribute): Change gcc_assert into gcc_checking_assert, verify !canonicalize_attr_name rather than that str.str doesn't start with '_'. * c-c++-common/Wno-attributes-1.c: Require effective target c || c++11 and drop dg-additional-options. * c-c++-common/Wno-attributes-2.c: Likewise. * c-c++-common/Wno-attributes-4.c: New test. * c-c++-common/Wno-attributes-5.c: New test.
next prev parent reply other threads:[~2021-11-24 9:09 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-11-22 19:37 [Bug c/103365] New: [12 Regression] ICE in register_scoped_attribute, at attribs.c:390 gscfq@t-online.de 2021-11-22 21:14 ` [Bug middle-end/103365] " pinskia at gcc dot gnu.org 2021-11-23 7:54 ` [Bug middle-end/103365] ICE in register_scoped_attribute, with attribute starting with underscore: -Wno-attributes=n::_a or #pragma GCC diagnostic ignored_attributes "n::_a" marxin at gcc dot gnu.org 2021-11-23 14:13 ` jakub at gcc dot gnu.org 2021-11-23 14:14 ` [Bug middle-end/103365] [12 Regression] " jakub at gcc dot gnu.org 2021-11-24 9:09 ` cvs-commit at gcc dot gnu.org [this message] 2021-11-24 9:11 ` jakub at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-103365-4-DffomJBMFe@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).