aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/constraint.cc
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2022-02-08 09:11:29 -0500
committerPatrick Palka <ppalka@redhat.com>2022-02-08 09:11:29 -0500
commit7ff201d85fad11ba6365a5612124b75b385a97bd (patch)
tree434c20375e3f384671cf3b2aae70c61a02b9f556 /gcc/cp/constraint.cc
parentdb5f1c17031ad8a898d77121f1e0e0141306e22a (diff)
downloadgcc-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.cc3
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