mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-24 04:10:29 +08:00
PR c++/93324 - ICE with -Wall on constexpr if.
This is a crash with constexpr if, when trying to see if the call in the if-statement is std::is_constant_evaluated. cp_get_callee_fndecl_nofold can return NULL_TREE and fndecl_built_in_p doesn't expect to get a null tree, so check FNDECL first.
This commit is contained in:
parent
bf91504dc2
commit
15ed55eabb
@ -1,3 +1,8 @@
|
||||
2020-01-22 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c++/93324 - ICE with -Wall on constexpr if.
|
||||
* semantics.c (is_std_constant_evaluated_p): Check fndecl.
|
||||
|
||||
2020-01-22 Patrick Palka <ppalka@redhat.com>
|
||||
|
||||
* constraint.cc (get_mapped_args): Avoid using auto_vec
|
||||
|
@ -734,6 +734,9 @@ is_std_constant_evaluated_p (tree fn)
|
||||
return false;
|
||||
|
||||
tree fndecl = cp_get_callee_fndecl_nofold (fn);
|
||||
if (fndecl == NULL_TREE)
|
||||
return false;
|
||||
|
||||
if (fndecl_built_in_p (fndecl, CP_BUILT_IN_IS_CONSTANT_EVALUATED,
|
||||
BUILT_IN_FRONTEND))
|
||||
return true;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2020-01-22 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
PR c++/93324 - ICE with -Wall on constexpr if.
|
||||
* g++.dg/cpp1z/constexpr-if33.C: New test.
|
||||
|
||||
2020-01-22 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* gcc.target/aarch64/sve/acle/general/stack_vars_1.c: New test.
|
||||
|
16
gcc/testsuite/g++.dg/cpp1z/constexpr-if33.C
Normal file
16
gcc/testsuite/g++.dg/cpp1z/constexpr-if33.C
Normal file
@ -0,0 +1,16 @@
|
||||
// PR c++/93324 - ICE with -Wall on constexpr if.
|
||||
// { dg-do compile { target c++17 } }
|
||||
// { dg-options "-Wall" }
|
||||
|
||||
struct {
|
||||
template <int>
|
||||
static constexpr bool a() { return 0; }
|
||||
} e;
|
||||
|
||||
template <typename>
|
||||
void d()
|
||||
{
|
||||
auto c(e);
|
||||
using b = decltype(c);
|
||||
if constexpr (b::a<2>());
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user