public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
@ 2020-12-17 16:51 gscfq@t-online.de
2020-12-17 17:25 ` [Bug c++/98355] " msebor at gcc dot gnu.org
` (10 more replies)
0 siblings, 11 replies; 12+ messages in thread
From: gscfq@t-online.de @ 2020-12-17 16:51 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
Bug ID: 98355
Summary: [9/10/11 Regression] ICE in has_attribute, at
c-family/c-attribs.c:5628
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: gscfq@t-online.de
Target Milestone: ---
Started to ICE with version r9, roundabout 20181125 :
$ cat z1.cc
struct S { int a; };
template <int> struct T
{
static_assert (__builtin_has_attribute (((S*)0) -> a, packed));
};
$ g++-11-20201213 -c z1.cc
z1.cc:4:57: internal compiler error: Segmentation fault
4 | static_assert (__builtin_has_attribute (((S*)0) -> a, packed));
| ^~~~~~
0xc8f5ff crash_signal
../../gcc/toplev.c:327
0x841f52 has_attribute(unsigned int, tree_node*, tree_node*, tree_node*
(*)(tree_node*))
../../gcc/c-family/c-attribs.c:5628
0x7525ed cp_parser_has_attribute_expression
../../gcc/cp/parser.c:8936
0x7525ed cp_parser_unary_expression
../../gcc/cp/parser.c:8527
0x72b84f cp_parser_cast_expression
../../gcc/cp/parser.c:9712
0x72c082 cp_parser_binary_expression
../../gcc/cp/parser.c:9814
0x72c7e0 cp_parser_assignment_expression
../../gcc/cp/parser.c:10118
0x72dcbd cp_parser_constant_expression
../../gcc/cp/parser.c:10414
0x72f7d2 cp_parser_static_assert
../../gcc/cp/parser.c:15319
0x75d23c cp_parser_member_declaration
../../gcc/cp/parser.c:25844
0x73774e cp_parser_member_specification_opt
../../gcc/cp/parser.c:25712
0x73774e cp_parser_class_specifier_1
../../gcc/cp/parser.c:24801
0x739639 cp_parser_class_specifier
../../gcc/cp/parser.c:25112
0x739639 cp_parser_type_specifier
../../gcc/cp/parser.c:18368
0x73a0b6 cp_parser_decl_specifier_seq
../../gcc/cp/parser.c:14990
0x75bd05 cp_parser_single_declaration
../../gcc/cp/parser.c:30321
0x75c095 cp_parser_template_declaration_after_parameters
../../gcc/cp/parser.c:29984
0x75c84b cp_parser_explicit_template_declaration
../../gcc/cp/parser.c:30250
0x75c84b cp_parser_template_declaration_after_export
../../gcc/cp/parser.c:30269
0x75ecf9 cp_parser_declaration
../../gcc/cp/parser.c:13996
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
@ 2020-12-17 17:25 ` msebor at gcc dot gnu.org
2021-01-05 8:34 ` rguenth at gcc dot gnu.org
` (9 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: msebor at gcc dot gnu.org @ 2020-12-17 17:25 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
Martin Sebor <msebor at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
See Also| |https://gcc.gnu.org/bugzill
| |a/show_bug.cgi?id=90915,
| |https://gcc.gnu.org/bugzill
| |a/show_bug.cgi?id=92104
CC| |msebor at gcc dot gnu.org
Last reconfirmed| |2020-12-17
Status|UNCONFIRMED |NEW
--- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> ---
The built-in (still) isn't implemented for templates. See also pr90915 (and
pr92104). There's little value in raising new reports for this or in changing
the ICE to Sorry.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
2020-12-17 17:25 ` [Bug c++/98355] " msebor at gcc dot gnu.org
@ 2021-01-05 8:34 ` rguenth at gcc dot gnu.org
2021-01-14 11:13 ` rguenth at gcc dot gnu.org
` (8 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2021-01-05 8:34 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |9.4
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
sorry() informs the user that the issue is known and not an "internal compiler
error" so I disagree
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
2020-12-17 17:25 ` [Bug c++/98355] " msebor at gcc dot gnu.org
2021-01-05 8:34 ` rguenth at gcc dot gnu.org
@ 2021-01-14 11:13 ` rguenth at gcc dot gnu.org
2021-01-19 14:59 ` jakub at gcc dot gnu.org
` (7 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: rguenth at gcc dot gnu.org @ 2021-01-14 11:13 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
` (2 preceding siblings ...)
2021-01-14 11:13 ` rguenth at gcc dot gnu.org
@ 2021-01-19 14:59 ` jakub at gcc dot gnu.org
2021-01-19 16:33 ` msebor at gcc dot gnu.org
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-01-19 14:59 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Agreed, but I'd also say that it shouldn't have been accepted without the
template support, because templates are essential part of the C++ language and
so not supporting templates means C++ isn't really supported. Design of all
the C++ FE features needs to take templates into account.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
` (3 preceding siblings ...)
2021-01-19 14:59 ` jakub at gcc dot gnu.org
@ 2021-01-19 16:33 ` msebor at gcc dot gnu.org
2021-01-29 4:41 ` mpolacek at gcc dot gnu.org
` (5 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: msebor at gcc dot gnu.org @ 2021-01-19 16:33 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
--- Comment #4 from Martin Sebor <msebor at gcc dot gnu.org> ---
I had stated my intent in the initial submission to complete the C++ support in
a followup patch:
https://gcc.gnu.org/pipermail/gcc-patches/2018-November/510455.html
Jason approved the initial patch with an encouragement to do so:
https://gcc.gnu.org/legacy-ml/gcc-patches/2018-10/msg01528.html
I might have gotten around to it if you and Jeff hadn't blocked for four months
(!) my fixes for a few simple ICEs in the code. Here's the first submission of
a patch for the first ICE I found in December 2018:
https://gcc.gnu.org/pipermail/gcc-patches/2018-December/512645.html
The fixes didn't get approved and committed in r270326 until April 2019, and
many rounds of back and forth bickering over whether the built-in should accept
expressions or error out on them.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
` (4 preceding siblings ...)
2021-01-19 16:33 ` msebor at gcc dot gnu.org
@ 2021-01-29 4:41 ` mpolacek at gcc dot gnu.org
2021-01-29 16:34 ` mpolacek at gcc dot gnu.org
` (4 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-01-29 4:41 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |mpolacek at gcc dot gnu.org
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
My earlier fix to emit sorry rather than ICE didn't catch this case; this patch
fixes that:
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -8934,7 +8934,7 @@ cp_parser_has_attribute_expression (cp_parser *parser)
{
if (oper == error_mark_node)
/* Nothing. */;
- else if (type_dependent_expression_p (oper))
+ else if (uses_template_parms (oper))
sorry_at (atloc, "%<__builtin_has_attribute%> with dependent argument "
"not supported yet");
else
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
` (5 preceding siblings ...)
2021-01-29 4:41 ` mpolacek at gcc dot gnu.org
@ 2021-01-29 16:34 ` mpolacek at gcc dot gnu.org
2021-02-01 15:21 ` cvs-commit at gcc dot gnu.org
` (3 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-01-29 16:34 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |mpolacek at gcc dot gnu.org
Status|NEW |ASSIGNED
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
` (6 preceding siblings ...)
2021-01-29 16:34 ` mpolacek at gcc dot gnu.org
@ 2021-02-01 15:21 ` cvs-commit at gcc dot gnu.org
2021-02-01 15:22 ` [Bug c++/98355] [9/10 " mpolacek at gcc dot gnu.org
` (2 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-02-01 15:21 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>:
https://gcc.gnu.org/g:bab669f2fc643cb1673aecd177eec1c773e9e48e
commit r11-7012-gbab669f2fc643cb1673aecd177eec1c773e9e48e
Author: Marek Polacek <polacek@redhat.com>
Date: Fri Jan 29 11:29:25 2021 -0500
c++: Improve sorry for __builtin_has_attribute [PR98355]
__builtin_has_attribute doesn't work in templates yet (bug 92104), so
in r11-471 I added a sorry. But that only caught type-dependent
expressions and we also want to sorry on value-dependent expressions.
This patch uses uses_template_parms, but guarded with p_t_d, because
u_t_p sets p_t_d and then v_d_e_p considers variables with reference
types value-dependent, which breaks builtin-has-attribute-6.c.
This is a regression and I also plan to apply this to gcc-10.
gcc/cp/ChangeLog:
PR c++/98355
* parser.c (cp_parser_has_attribute_expression): Use
uses_template_parms instead of type_dependent_expression_p.
gcc/testsuite/ChangeLog:
PR c++/98355
* g++.dg/ext/builtin-has-attribute2.C: New test.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9/10 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
` (7 preceding siblings ...)
2021-02-01 15:21 ` cvs-commit at gcc dot gnu.org
@ 2021-02-01 15:22 ` mpolacek at gcc dot gnu.org
2021-02-01 15:23 ` cvs-commit at gcc dot gnu.org
2021-02-01 15:23 ` [Bug c++/98355] [9 " mpolacek at gcc dot gnu.org
10 siblings, 0 replies; 12+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-02-01 15:22 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[9/10/11 Regression] ICE in |[9/10 Regression] ICE in
|has_attribute, at |has_attribute, at
|c-family/c-attribs.c:5628 |c-family/c-attribs.c:5628
--- Comment #7 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Fixed on trunk thus far.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9/10 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
` (8 preceding siblings ...)
2021-02-01 15:22 ` [Bug c++/98355] [9/10 " mpolacek at gcc dot gnu.org
@ 2021-02-01 15:23 ` cvs-commit at gcc dot gnu.org
2021-02-01 15:23 ` [Bug c++/98355] [9 " mpolacek at gcc dot gnu.org
10 siblings, 0 replies; 12+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-02-01 15:23 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-10 branch has been updated by Marek Polacek
<mpolacek@gcc.gnu.org>:
https://gcc.gnu.org/g:c616e86e8bc76f867242b4aba372736d1c8cbf80
commit r10-9332-gc616e86e8bc76f867242b4aba372736d1c8cbf80
Author: Marek Polacek <polacek@redhat.com>
Date: Fri Jan 29 11:29:25 2021 -0500
c++: Improve sorry for __builtin_has_attribute [PR98355]
__builtin_has_attribute doesn't work in templates yet (bug 92104), so
in r11-471 I added a sorry. But that only caught type-dependent
expressions and we also want to sorry on value-dependent expressions.
This patch uses uses_template_parms, but guarded with p_t_d, because
u_t_p sets p_t_d and then v_d_e_p considers variables with reference
types value-dependent, which breaks builtin-has-attribute-6.c.
This is a regression and I also plan to apply this to gcc-10.
gcc/cp/ChangeLog:
PR c++/98355
* parser.c (cp_parser_has_attribute_expression): Use
uses_template_parms instead of type_dependent_expression_p.
gcc/testsuite/ChangeLog:
PR c++/98355
* g++.dg/ext/builtin-has-attribute2.C: New test.
(cherry picked from commit bab669f2fc643cb1673aecd177eec1c773e9e48e)
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug c++/98355] [9 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
` (9 preceding siblings ...)
2021-02-01 15:23 ` cvs-commit at gcc dot gnu.org
@ 2021-02-01 15:23 ` mpolacek at gcc dot gnu.org
10 siblings, 0 replies; 12+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-02-01 15:23 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98355
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|ASSIGNED |RESOLVED
Summary|[9/10 Regression] ICE in |[9 Regression] ICE in
|has_attribute, at |has_attribute, at
|c-family/c-attribs.c:5628 |c-family/c-attribs.c:5628
--- Comment #9 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Fixed in 10 too.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2021-02-01 15:23 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-17 16:51 [Bug c++/98355] New: [9/10/11 Regression] ICE in has_attribute, at c-family/c-attribs.c:5628 gscfq@t-online.de
2020-12-17 17:25 ` [Bug c++/98355] " msebor at gcc dot gnu.org
2021-01-05 8:34 ` rguenth at gcc dot gnu.org
2021-01-14 11:13 ` rguenth at gcc dot gnu.org
2021-01-19 14:59 ` jakub at gcc dot gnu.org
2021-01-19 16:33 ` msebor at gcc dot gnu.org
2021-01-29 4:41 ` mpolacek at gcc dot gnu.org
2021-01-29 16:34 ` mpolacek at gcc dot gnu.org
2021-02-01 15:21 ` cvs-commit at gcc dot gnu.org
2021-02-01 15:22 ` [Bug c++/98355] [9/10 " mpolacek at gcc dot gnu.org
2021-02-01 15:23 ` cvs-commit at gcc dot gnu.org
2021-02-01 15:23 ` [Bug c++/98355] [9 " mpolacek at gcc dot gnu.org
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).