public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/106863] New: internal compiler error: in write_template_arg_literal, at cp/mangle.cc:3678
@ 2022-09-06 19:50 jehova at existiert dot net
  2022-09-07 12:00 ` [Bug c++/106863] ICE in write_template_arg_literal, at cp/mangle.cc:3678 since r12-4782-geca767aa51d1f696 marxin at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: jehova at existiert dot net @ 2022-09-06 19:50 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 106863
           Summary: internal compiler error: in
                    write_template_arg_literal, at cp/mangle.cc:3678
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jehova at existiert dot net
  Target Milestone: ---

$ g++ --version
g++ (GCC) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


$ g++ -c bug.cxx -freport-bug
bug.cxx: In instantiation of ‘decltype ((g(t), (void)0)) f(T) [with T = int]’:
bug.cxx:4:6: internal compiler error: in write_template_arg_literal, at
cp/mangle.cc:3678
    4 | auto f(T t) -> decltype(g(t), void{})
      |      ^
0x19eab38 internal_error(char const*, ...)
        ???:0
0x6546f4 fancy_abort(char const*, int, char const*)
        ???:0
0x728a60 mangle_decl(tree_node*)
        ???:0
0x984016 symbol_table::finalize_compilation_unit()
        ???:0
Please submit a full bug report, with preprocessed source.
Please include the complete backtrace with any bug report.
See <https://bugs.archlinux.org/> for instructions.
Preprocessed source stored into /tmp/ccL1sCjr.out file, please attach this to
your bugreport.


$ cat bug.cxx 
void g(int);

template <typename T>
auto f(T t) -> decltype(g(t), void{})
{
   return g(t);
}

int main()
{
   f(0);
}


$ cat ccL1sCjr.out 
// Target: x86_64-pc-linux-gnu
// Configured with: /build/gcc/src/gcc/configure
--enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --enable-bootstrap
--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man
--infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/
--with-build-config=bootstrap-lto --with-linker-hash-style=gnu
--with-system-zlib --enable-__cxa_atexit --enable-cet=auto
--enable-checking=release --enable-clocale=gnu --enable-default-pie
--enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object
--enable-libstdcxx-backtrace --enable-link-serialization=1
--enable-linker-build-id --enable-lto --enable-multilib --enable-plugin
--enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch
--disable-werror
// Thread model: posix
// Supported LTO compression algorithms: zlib zstd
// gcc version 12.2.0 (GCC) 
// 
// bug.cxx: In instantiation of ‘decltype ((g(t), (void)0)) f(T) [with T =
int]’:
// bug.cxx:4:6: internal compiler error: in write_template_arg_literal, at
cp/mangle.cc:3678
//     4 | auto f(T t) -> decltype(g(t), void{})
//       |      ^
// 0x19eab38 internal_error(char const*, ...)
//      ???:0
// 0x6546f4 fancy_abort(char const*, int, char const*)
//      ???:0
// 0x728a60 mangle_decl(tree_node*)
//      ???:0
// 0x984016 symbol_table::finalize_compilation_unit()
//      ???:0
// Please submit a full bug report, with preprocessed source.
// Please include the complete backtrace with any bug report.
// See <https://bugs.archlinux.org/> for instructions.

// /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/cc1plus -quiet -D_GNU_SOURCE bug.cxx
-quiet -dumpbase bug.cxx -dumpbase-ext .cxx -mtune=generic -march=x86-64
-freport-bug -o - -frandom-seed=0 -fdump-noaddr

# 0 "bug.cxx"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 0 "<command-line>" 2
# 1 "bug.cxx"
void g(int);

template <typename T>
auto f(T t) -> decltype(g(t), void{})
{
   return g(t);
}

int main()
{
   f(0);
}

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

* [Bug c++/106863] ICE in write_template_arg_literal, at cp/mangle.cc:3678 since r12-4782-geca767aa51d1f696
  2022-09-06 19:50 [Bug c++/106863] New: internal compiler error: in write_template_arg_literal, at cp/mangle.cc:3678 jehova at existiert dot net
@ 2022-09-07 12:00 ` marxin at gcc dot gnu.org
  2022-09-07 17:47 ` jehova at existiert dot net
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: marxin at gcc dot gnu.org @ 2022-09-07 12:00 UTC (permalink / raw)
  To: gcc-bugs

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

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
            Summary|internal compiler error: in |ICE in
                   |write_template_arg_literal, |write_template_arg_literal,
                   |at cp/mangle.cc:3678        |at cp/mangle.cc:3678 since
                   |                            |r12-4782-geca767aa51d1f696
   Last reconfirmed|                            |2022-09-07
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |marxin at gcc dot gnu.org

--- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> ---
Started with r12-4782-geca767aa51d1f696, rejected before.

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

* [Bug c++/106863] ICE in write_template_arg_literal, at cp/mangle.cc:3678 since r12-4782-geca767aa51d1f696
  2022-09-06 19:50 [Bug c++/106863] New: internal compiler error: in write_template_arg_literal, at cp/mangle.cc:3678 jehova at existiert dot net
  2022-09-07 12:00 ` [Bug c++/106863] ICE in write_template_arg_literal, at cp/mangle.cc:3678 since r12-4782-geca767aa51d1f696 marxin at gcc dot gnu.org
@ 2022-09-07 17:47 ` jehova at existiert dot net
  2022-10-18 13:32 ` jakub at gcc dot gnu.org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: jehova at existiert dot net @ 2022-09-07 17:47 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from jehova at existiert dot net ---
I'm not sure if 'ice-on-valid-code' is appropriate here, since the example code
is *not* valid.
It is if 'void{}' is replaced by 'void()' (which is perfectly accepted by GCC).

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

* [Bug c++/106863] ICE in write_template_arg_literal, at cp/mangle.cc:3678 since r12-4782-geca767aa51d1f696
  2022-09-06 19:50 [Bug c++/106863] New: internal compiler error: in write_template_arg_literal, at cp/mangle.cc:3678 jehova at existiert dot net
  2022-09-07 12:00 ` [Bug c++/106863] ICE in write_template_arg_literal, at cp/mangle.cc:3678 since r12-4782-geca767aa51d1f696 marxin at gcc dot gnu.org
  2022-09-07 17:47 ` jehova at existiert dot net
@ 2022-10-18 13:32 ` jakub at gcc dot gnu.org
  2022-10-18 13:34 ` jakub at gcc dot gnu.org
  2022-10-21  7:03 ` cvs-commit at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-10-18 13:32 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 53722
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53722&action=edit
gcc13-pr106863.patch

If we can mangle void{} the same as void(), then this patch achieves that
(or we could call build_functional_cast always, but for
!processing_template_decl it will in the end just return void_node).
Otherwise, we'd need to mangle void_node somehow (how?), but void_node doesn't
always imply void{}, it is created for many other cases.

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

* [Bug c++/106863] ICE in write_template_arg_literal, at cp/mangle.cc:3678 since r12-4782-geca767aa51d1f696
  2022-09-06 19:50 [Bug c++/106863] New: internal compiler error: in write_template_arg_literal, at cp/mangle.cc:3678 jehova at existiert dot net
                   ` (2 preceding siblings ...)
  2022-10-18 13:32 ` jakub at gcc dot gnu.org
@ 2022-10-18 13:34 ` jakub at gcc dot gnu.org
  2022-10-21  7:03 ` cvs-commit at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-10-18 13:34 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
And it is valid,
https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2351
was applied as a DR to C++11 and later.

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

* [Bug c++/106863] ICE in write_template_arg_literal, at cp/mangle.cc:3678 since r12-4782-geca767aa51d1f696
  2022-09-06 19:50 [Bug c++/106863] New: internal compiler error: in write_template_arg_literal, at cp/mangle.cc:3678 jehova at existiert dot net
                   ` (3 preceding siblings ...)
  2022-10-18 13:34 ` jakub at gcc dot gnu.org
@ 2022-10-21  7:03 ` cvs-commit at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-10-21  7:03 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 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:5f9fac6ca86458ef21ab91ca471429d63f954003

commit r13-3429-g5f9fac6ca86458ef21ab91ca471429d63f954003
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Fri Oct 21 09:00:41 2022 +0200

    c++: Fix up mangling ICE with void{} [PR106863]

    We ICE on the following testcase during mangling, finish_compound_literal
    returns for void{} void_node and the mangler doesn't handle it.
    Handling void_node in the mangler seems problematic to me, because
    we don't know for which case it has been created.
    The following patch arranges to mangle it as other compound literals
    with no operands, so it demangles as void{}, by returning a void type
    COMPOUND_LITERAL_P with no elements if processing_template_decl.
    Otherwise it keeps returning void_node.

    2022-10-21  Jakub Jelinek  <jakub@redhat.com>

            PR c++/106863
            * semantics.cc (finish_compound_literal): For void{}, if
            processing_template_decl return a COMPOUND_LITERAL_P
            CONSTRUCTOR rather than void_node.

            * g++.dg/cpp0x/dr2351-2.C: New test.

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

end of thread, other threads:[~2022-10-21  7:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-06 19:50 [Bug c++/106863] New: internal compiler error: in write_template_arg_literal, at cp/mangle.cc:3678 jehova at existiert dot net
2022-09-07 12:00 ` [Bug c++/106863] ICE in write_template_arg_literal, at cp/mangle.cc:3678 since r12-4782-geca767aa51d1f696 marxin at gcc dot gnu.org
2022-09-07 17:47 ` jehova at existiert dot net
2022-10-18 13:32 ` jakub at gcc dot gnu.org
2022-10-18 13:34 ` jakub at gcc dot gnu.org
2022-10-21  7:03 ` cvs-commit 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).