diff options
author | Patrick Palka <ppalka@redhat.com> | 2022-02-08 09:11:29 -0500 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2022-02-08 09:11:29 -0500 |
commit | 7ff201d85fad11ba6365a5612124b75b385a97bd (patch) | |
tree | 434c20375e3f384671cf3b2aae70c61a02b9f556 /gcc/cp/constraint.cc | |
parent | db5f1c17031ad8a898d77121f1e0e0141306e22a (diff) | |
download | gcc-7ff201d85fad11ba6365a5612124b75b385a97bd.zip gcc-7ff201d85fad11ba6365a5612124b75b385a97bd.tar.gz gcc-7ff201d85fad11ba6365a5612124b75b385a97bd.tar.bz2 |
c++: satisfaction value of type const bool [PR104410]
Here constant evaluation of the atomic constraint use_func_v<T>
sensibly yields an INTEGER_CST of type const bool, but the assert in
satisfaction_value expects unqualified bool. So let's just relax the
assert to accept cv-qualified bool.
PR c++/104410
gcc/cp/ChangeLog:
* constraint.cc (satisfaction_value): Relax assert to accept
cv-qualified bool.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/concepts-pr104410.C: New test.
Diffstat (limited to 'gcc/cp/constraint.cc')
-rw-r--r-- | gcc/cp/constraint.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc index b7b9439..12db7e5 100644 --- a/gcc/cp/constraint.cc +++ b/gcc/cp/constraint.cc @@ -2818,7 +2818,8 @@ satisfaction_value (tree t) return t; gcc_assert (TREE_CODE (t) == INTEGER_CST - && same_type_p (TREE_TYPE (t), boolean_type_node)); + && same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (t), + boolean_type_node)); if (integer_zerop (t)) return boolean_false_node; else |