public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/96623] New: [10/11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893
@ 2020-08-15 2:38 haoxintu at gmail dot com
2020-08-18 14:29 ` [Bug c++/96623] [11 " mpolacek at gcc dot gnu.org
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: haoxintu at gmail dot com @ 2020-08-15 2:38 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96623
Bug ID: 96623
Summary: [10/11 Regression] ICE in inject_parm_decls, at
cp/parser.c:23893
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Keywords: ice-on-invalid-code
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: haoxintu at gmail dot com
Target Milestone: ---
Input:
//small.cc
struct A{
void a(){
struct B {
void b () noexcept();
};
}
};
Command:
g++ small.cc
Output:
small.cc: In member function ‘void A::a()’:
small.cc:5:25: internal compiler error: in inject_parm_decls, at
cp/parser.c:23893
5 | };
| ^
0x67450f inject_parm_decls
../../gcc/cp/parser.c:23893
0x67450f cp_parser_class_specifier_1
../../gcc/cp/parser.c:24239
0x9d3143 cp_parser_class_specifier
../../gcc/cp/parser.c:24308
0x9d3143 cp_parser_type_specifier
../../gcc/cp/parser.c:17811
0x9d40be cp_parser_decl_specifier_seq
../../gcc/cp/parser.c:14436
0x9d4e71 cp_parser_simple_declaration
../../gcc/cp/parser.c:13690
0x9d6fdd cp_parser_declaration_statement
../../gcc/cp/parser.c:13249
0x9d7c67 cp_parser_statement
../../gcc/cp/parser.c:11555
0x9d8ccd cp_parser_statement_seq_opt
../../gcc/cp/parser.c:11921
0x9d8da8 cp_parser_compound_statement
../../gcc/cp/parser.c:11871
0x9f0ee5 cp_parser_function_body
../../gcc/cp/parser.c:23170
0x9f0ee5 cp_parser_ctor_initializer_opt_and_function_body
../../gcc/cp/parser.c:23221
0x9f4510 cp_parser_function_definition_after_declarator
../../gcc/cp/parser.c:29117
0x9f590c cp_parser_late_parsing_for_member
../../gcc/cp/parser.c:30019
0x9d225b cp_parser_class_specifier_1
../../gcc/cp/parser.c:24284
0x9d3143 cp_parser_class_specifier
../../gcc/cp/parser.c:24308
0x9d3143 cp_parser_type_specifier
../../gcc/cp/parser.c:17811
0x9d40be cp_parser_decl_specifier_seq
../../gcc/cp/parser.c:14436
0x9d4e71 cp_parser_simple_declaration
../../gcc/cp/parser.c:13690
0xa002fe cp_parser_declaration
../../gcc/cp/parser.c:13510
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
GCC-10 compiles this code ok, and I test in GCC-trunk-20200808.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/96623] [11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893
2020-08-15 2:38 [Bug c++/96623] New: [10/11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893 haoxintu at gmail dot com
@ 2020-08-18 14:29 ` mpolacek at gcc dot gnu.org
2020-08-18 14:31 ` mpolacek at gcc dot gnu.org
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2020-08-18 14:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96623
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[10/11 Regression] ICE in |[11 Regression] ICE in
|inject_parm_decls, at |inject_parm_decls, at
|cp/parser.c:23893 |cp/parser.c:23893
CC| |mpolacek at gcc dot gnu.org
Target Milestone|--- |11.0
Last reconfirmed| |2020-08-18
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
11 Regression, started with r11-289.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/96623] [11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893
2020-08-15 2:38 [Bug c++/96623] New: [10/11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893 haoxintu at gmail dot com
2020-08-18 14:29 ` [Bug c++/96623] [11 " mpolacek at gcc dot gnu.org
@ 2020-08-18 14:31 ` mpolacek at gcc dot gnu.org
2020-10-12 12:33 ` rguenth at gcc dot gnu.org
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2020-08-18 14:31 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96623
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
We should have rejected "noexcept()".
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/96623] [11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893
2020-08-15 2:38 [Bug c++/96623] New: [10/11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893 haoxintu at gmail dot com
2020-08-18 14:29 ` [Bug c++/96623] [11 " mpolacek at gcc dot gnu.org
2020-08-18 14:31 ` mpolacek at gcc dot gnu.org
@ 2020-10-12 12:33 ` rguenth at gcc dot gnu.org
2021-01-15 21:37 ` mpolacek at gcc dot gnu.org
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2020-10-12 12:33 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96623
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/96623] [11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893
2020-08-15 2:38 [Bug c++/96623] New: [10/11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893 haoxintu at gmail dot com
` (2 preceding siblings ...)
2020-10-12 12:33 ` rguenth at gcc dot gnu.org
@ 2021-01-15 21:37 ` mpolacek at gcc dot gnu.org
2021-01-21 19:30 ` mpolacek at gcc dot gnu.org
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-01-15 21:37 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96623
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Keywords|ice-on-invalid-code |ice-on-valid-code
Assignee|unassigned at gcc dot gnu.org |mpolacek at gcc dot gnu.org
--- Comment #3 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
This one is valid:
constexpr int x = 0;
struct A {
void foo () {
struct B {
void bar () noexcept(x);
};
}
};
Doesn't happen when we don't delay the noexcept-specifier parsing, so mine.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/96623] [11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893
2020-08-15 2:38 [Bug c++/96623] New: [10/11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893 haoxintu at gmail dot com
` (3 preceding siblings ...)
2021-01-15 21:37 ` mpolacek at gcc dot gnu.org
@ 2021-01-21 19:30 ` mpolacek at gcc dot gnu.org
2021-01-22 22:55 ` cvs-commit at gcc dot gnu.org
2021-01-22 22:55 ` mpolacek at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-01-21 19:30 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96623
--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
And an extended test to check that various variables are in scope:
constexpr int x = 0;
struct A {
int a1;
void foo (int p) {
int foovar;
struct B {
int b1;
void bar1 () noexcept(x);
void bar2 () noexcept(noexcept(this->b1));
void bar3 () noexcept(noexcept(this->b2));
void bar4 () noexcept(noexcept(a1));
void bar5 () noexcept(noexcept(a2));
void bar6 () noexcept(noexcept(b1));
void bar7 () noexcept(noexcept(b2));
void bar8 () noexcept(noexcept(foovar));
void bar9 () noexcept(noexcept(p));
int b2;
};
}
int a2;
};
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/96623] [11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893
2020-08-15 2:38 [Bug c++/96623] New: [10/11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893 haoxintu at gmail dot com
` (4 preceding siblings ...)
2021-01-21 19:30 ` mpolacek at gcc dot gnu.org
@ 2021-01-22 22:55 ` cvs-commit at gcc dot gnu.org
2021-01-22 22:55 ` mpolacek at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-01-22 22:55 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96623
--- Comment #5 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:89100826acec92dfaa6ab8f2646b8053e7dbc67c
commit r11-6874-g89100826acec92dfaa6ab8f2646b8053e7dbc67c
Author: Marek Polacek <polacek@redhat.com>
Date: Thu Jan 21 16:12:28 2021 -0500
c++: ICE with noexcept in class in member function [PR96623]
I discovered very strange code in inject_parm_decls:
if (args && is_this_parameter (args))
{
gcc_checking_assert (current_class_ptr == NULL_TREE);
current_class_ptr = NULL_TREE;
We are tripping up on the assert because when we call inject_parm_decls,
current_class_ptr is set to 'A'. It was set by inject_this_parameter
after we've parsed the parameter-declaration-clause of the member
function foo. It seems correct to set ccp/ccr to A::B when we're
late parsing the noexcept-specifiers of bar* functions in B, so that
this-> does the right thing. Since inject_parm_decls doesn't expect
to see non-null ccp/ccr, reset it before calling inject_parm_decls.
gcc/cp/ChangeLog:
PR c++/96623
* parser.c (inject_parm_decls): Remove a redundant assignment.
(cp_parser_class_specifier_1): Clear current_class_{ptr,ref}
before calling inject_parm_decls.
gcc/testsuite/ChangeLog:
PR c++/96623
* g++.dg/cpp0x/noexcept64.C: New test.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c++/96623] [11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893
2020-08-15 2:38 [Bug c++/96623] New: [10/11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893 haoxintu at gmail dot com
` (5 preceding siblings ...)
2021-01-22 22:55 ` cvs-commit at gcc dot gnu.org
@ 2021-01-22 22:55 ` mpolacek at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-01-22 22:55 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96623
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|ASSIGNED |RESOLVED
--- Comment #6 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Fixed.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-01-22 22:55 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-15 2:38 [Bug c++/96623] New: [10/11 Regression] ICE in inject_parm_decls, at cp/parser.c:23893 haoxintu at gmail dot com
2020-08-18 14:29 ` [Bug c++/96623] [11 " mpolacek at gcc dot gnu.org
2020-08-18 14:31 ` mpolacek at gcc dot gnu.org
2020-10-12 12:33 ` rguenth at gcc dot gnu.org
2021-01-15 21:37 ` mpolacek at gcc dot gnu.org
2021-01-21 19:30 ` mpolacek at gcc dot gnu.org
2021-01-22 22:55 ` cvs-commit at gcc dot gnu.org
2021-01-22 22:55 ` 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).