[Bug c++/93551] New: Call from templated function to constrained constructor segfaults when attempting to narrow to bool
pacoarjonilla at yahoo dot es
gcc-bugzilla@gcc.gnu.org
Mon Feb 3 17:13:00 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93551
Bug ID: 93551
Summary: Call from templated function to constrained
constructor segfaults when attempting to narrow to
bool
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: pacoarjonilla at yahoo dot es
Target Milestone: ---
Minimum code:
>>>>>>>>>>>>>
#include <type_traits>
class Bar { };
struct Foo {
template <typename P> requires std::is_base_of_v<Bar, P>
Foo(P const&);
};
template <typename P>
Foo fun(P const& arg) {
(bool)arg;
return Foo {arg};
}
int main() {
fun(Bar{});
return 0;
}
>>>>>>>>>>>>>
On GCC10 git commit 3539fc13172 (2020/02/03)
runnning on intel i7-8700K on OpenSUSE Tumbleweed.
Also confirmed in compiler explorer GCC trunk (godbolt.org, just copy and
paste)
g++10git --std=c++2a namidevel.cc
namidevel.cc: In instantiation of ‘Foo fun(const P&) [with P = Bar]’:
namidevel.cc:13:14: required from here
namidevel.cc:9:5: error: invalid cast from type ‘const Bar’ to type ‘bool’
9 | (bool)arg;
| ^~~~~~~~~
namidevel.cc:11:1: internal compiler error: Segmentation fault
11 | }
| ^
0xfd70bf crash_signal
../../gcc/gcc/toplev.c:328
0x9e29a7 pop_tinst_level()
../../gcc/gcc/cp/pt.c:10757
0x9fa98f instantiate_decl(tree_node*, bool, bool)
../../gcc/gcc/cp/pt.c:25591
0xa2becb instantiate_pending_templates(int)
../../gcc/gcc/cp/pt.c:25665
0x936033 c_parse_final_cleanups()
../../gcc/gcc/cp/decl2.c:4875
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.
More information about the Gcc-bugs
mailing list