This is fixed in GCC 13, available in testing and unstable. Doesn't look like a
regression, so it's unlikely to be backported.
On 12.10.23 09:20, Andre Naujoks wrote:
Package: gcc-12
Version: 12.3.0-10
Severity: normal
X-Debbugs-Cc: andre.nauj...@keysight.com
Hello.
The following piece of code generates a compiler error with gcc-12 in C++20
mode:
template <typename T, float D>
struct F {
static double foo() { return D; }
};
template <typename T>
struct F<T, 1.0f> {
static double foo() { return 1.0; }
};
int main()
{
return F<void, 1.0f>::foo();
}
gcc-13 in sid does compile this correctly. on godbolt only gcc-trunk, not
gcc-13, compiles this, so from my point of view, it may be a Debian patch in
gcc-13 in sid, which fixes this.
The error (on gcc-12 from sid) is this:
$ g++-12 -std=c++20 -o test test.cpp
test.cpp: In function ‘int main()’:
test.cpp:13:29: internal compiler error: in unify, at cp/pt.cc:24903
13 | return F<void, 1.0f>::foo();
| ^~
0x7f41729256c9 __libc_start_call_main
../sysdeps/nptl/libc_start_call_main.h:58
0x7f4172925784 __libc_start_main_impl
../csu/libc-start.c:360
Please submit a full bug report, with preprocessed source (by using -freport-
bug).
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-12/README.Bugs> for instructions.
gcc in bookworm looks a little different but should be the same bug:
$ g++ -std=c++20 -o test test.cpp
test.cpp: In function 'int main()':
test.cpp:13:29: internal compiler error: in unify, at cp/pt.cc:24832
13 | return F<void, 1.0f>::foo();
| ^~
0x1afaeb6 internal_error(char const*, ...)
???:0
0x69ec5a fancy_abort(char const*, int, char const*)
???:0
0x813491 most_specialized_partial_spec(tree_node*, int)
???:0
0x830231 instantiate_class_template(tree_node*)
???:0
0x86621b complete_type(tree_node*)
???:0
0x7f5c79 c_parse_file()
???:0
0x8e019d c_common_parse_file()
???:0
Please submit a full bug report, with preprocessed source (by using -freport-
bug).
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-12/README.Bugs> for instructions.
Thanks in advance!
Andre
-- System Information:
Debian Release: trixie/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 6.5.0-2-amd64 (SMP w/16 CPU threads; PREEMPT)
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages gcc-12 depends on:
ii binutils 2.41-6
ii cpp-12 12.3.0-10
ii gcc-12-base 12.3.0-10
ii libc6 2.37-12
ii libcc1-0 13.2.0-5
ii libgcc-12-dev 12.3.0-10
ii libgcc-s1 13.2.0-5
ii libgmp10 2:6.3.0+dfsg-2
ii libisl23 0.26-3
ii libmpc3 1.3.1-1
ii libmpfr6 4.2.1-1
ii libstdc++6 13.2.0-5
ii libzstd1 1.5.5+dfsg2-2
ii zlib1g 1:1.2.13.dfsg-3
Versions of packages gcc-12 recommends:
ii libc6-dev 2.37-12
Versions of packages gcc-12 suggests:
ii gcc-12-doc 12.2.0-1
pn gcc-12-locales <none>
pn gcc-12-multilib <none>
-- no debconf information