public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/99844] New: ICE: unexpected expression 'B' of kind template_parm_index
@ 2021-03-31  2:58 hewillk at gmail dot com
  2021-03-31 16:07 ` [Bug c++/99844] [9/10/11 Regression] " mpolacek at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: hewillk at gmail dot com @ 2021-03-31  2:58 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99844

            Bug ID: 99844
           Summary: ICE: unexpected expression 'B' of kind
                    template_parm_index
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hewillk at gmail dot com
  Target Milestone: ---

Related to fixed PR 99745 and PR 99757.

https://godbolt.org/z/5qW5a1Mnq

template <bool... B>
struct S {
  constexpr explicit(B) S() {}
};

constexpr S<true> s;


<source>:3:25: internal compiler error: unexpected expression 'B' of kind
template_parm_index
    3 |   constexpr explicit(B) S() {}
      |                         ^
0x1cfb6a9 internal_error(char const*, ...)
        ???:0
0x9164c7 tsubst(tree_node*, tree_node*, int, tree_node*)
        ???:0
0x959fc9 instantiate_class_template(tree_node*)
        ???:0
0x77fbc7 start_decl_1(tree_node*, bool)
        ???:0
0x7a728f start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,
tree_node*, tree_node*, tree_node**)
        ???:0
0x8e12ad c_parse_file()
        ???:0
0xa600a2 c_common_parse_file()
        ???:0
Please submit a full bug report,
with preprocessed source if appropriate.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/99844] [9/10/11 Regression] ICE: unexpected expression 'B' of kind template_parm_index
  2021-03-31  2:58 [Bug c++/99844] New: ICE: unexpected expression 'B' of kind template_parm_index hewillk at gmail dot com
@ 2021-03-31 16:07 ` mpolacek at gcc dot gnu.org
  2021-03-31 16:07 ` mpolacek at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-03-31 16:07 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99844

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2021-03-31
                 CC|                            |mpolacek at gcc dot gnu.org
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |mpolacek at gcc dot gnu.org
   Target Milestone|---                         |9.4
            Summary|ICE: unexpected expression  |[9/10/11 Regression] ICE:
                   |'B' of kind                 |unexpected expression 'B'
                   |template_parm_index         |of kind template_parm_index

--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Started with r265641, before we didn't handle explicit(bool), so I'm not sure
if I can call this a regression.  I'll take it though.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/99844] [9/10/11 Regression] ICE: unexpected expression 'B' of kind template_parm_index
  2021-03-31  2:58 [Bug c++/99844] New: ICE: unexpected expression 'B' of kind template_parm_index hewillk at gmail dot com
  2021-03-31 16:07 ` [Bug c++/99844] [9/10/11 Regression] " mpolacek at gcc dot gnu.org
@ 2021-03-31 16:07 ` mpolacek at gcc dot gnu.org
  2021-04-07 15:15 ` mpolacek at gcc dot gnu.org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-03-31 16:07 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99844

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P2

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/99844] [9/10/11 Regression] ICE: unexpected expression 'B' of kind template_parm_index
  2021-03-31  2:58 [Bug c++/99844] New: ICE: unexpected expression 'B' of kind template_parm_index hewillk at gmail dot com
  2021-03-31 16:07 ` [Bug c++/99844] [9/10/11 Regression] " mpolacek at gcc dot gnu.org
  2021-03-31 16:07 ` mpolacek at gcc dot gnu.org
@ 2021-04-07 15:15 ` mpolacek at gcc dot gnu.org
  2021-04-08 11:46 ` cvs-commit at gcc dot gnu.org
  2021-04-08 11:46 ` [Bug c++/99844] [9/10 " mpolacek at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-04-07 15:15 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99844

--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
We also ICE on

template <bool... B>
struct S {
 void fn() noexcept(B);
};

void fn ()
{
  S<true> s;
  s.fn();
}

so this needs to be fixed more generally than just in explicit().

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/99844] [9/10/11 Regression] ICE: unexpected expression 'B' of kind template_parm_index
  2021-03-31  2:58 [Bug c++/99844] New: ICE: unexpected expression 'B' of kind template_parm_index hewillk at gmail dot com
                   ` (2 preceding siblings ...)
  2021-04-07 15:15 ` mpolacek at gcc dot gnu.org
@ 2021-04-08 11:46 ` cvs-commit at gcc dot gnu.org
  2021-04-08 11:46 ` [Bug c++/99844] [9/10 " mpolacek at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-04-08 11:46 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99844

--- Comment #3 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:2cd5333d16419f596d07a830bb3f1c40fa8a7b5c

commit r11-8041-g2cd5333d16419f596d07a830bb3f1c40fa8a7b5c
Author: Marek Polacek <polacek@redhat.com>
Date:   Wed Apr 7 16:44:24 2021 -0400

    c++: Fix ICE with unexpanded parameter pack [PR99844]

    In explicit17.C, we weren't detecting an unexpanded parameter pack in
    explicit(bool), so we crashed on a TEMPLATE_PARM_INDEX in constexpr.

    I noticed the same is true for noexcept(), but only since my patch to
    implement delayed parsing of noexcept.  Previously, we would detect the
    unexpanded pack in push_template_decl but now the noexcept expression
    has not yet been parsed, so we need to do it a bit later.

    gcc/cp/ChangeLog:

            PR c++/99844
            * decl.c (build_explicit_specifier): Call
            check_for_bare_parameter_packs.
            * except.c (build_noexcept_spec): Likewise.

    gcc/testsuite/ChangeLog:

            PR c++/99844
            * g++.dg/cpp2a/explicit16.C: Use c++20.
            * g++.dg/cpp0x/noexcept66.C: New test.
            * g++.dg/cpp2a/explicit17.C: New test.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/99844] [9/10 Regression] ICE: unexpected expression 'B' of kind template_parm_index
  2021-03-31  2:58 [Bug c++/99844] New: ICE: unexpected expression 'B' of kind template_parm_index hewillk at gmail dot com
                   ` (3 preceding siblings ...)
  2021-04-08 11:46 ` cvs-commit at gcc dot gnu.org
@ 2021-04-08 11:46 ` mpolacek at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2021-04-08 11:46 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99844

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|ASSIGNED                    |RESOLVED
            Summary|[9/10/11 Regression] ICE:   |[9/10 Regression] ICE:
                   |unexpected expression 'B'   |unexpected expression 'B'
                   |of kind template_parm_index |of kind template_parm_index

--- Comment #4 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Fixed in GCC 11.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-04-08 11:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-31  2:58 [Bug c++/99844] New: ICE: unexpected expression 'B' of kind template_parm_index hewillk at gmail dot com
2021-03-31 16:07 ` [Bug c++/99844] [9/10/11 Regression] " mpolacek at gcc dot gnu.org
2021-03-31 16:07 ` mpolacek at gcc dot gnu.org
2021-04-07 15:15 ` mpolacek at gcc dot gnu.org
2021-04-08 11:46 ` cvs-commit at gcc dot gnu.org
2021-04-08 11:46 ` [Bug c++/99844] [9/10 " 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).