aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/except.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/except.c')
-rw-r--r--gcc/cp/except.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index cbb0235..3689566 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -1316,15 +1316,21 @@ build_noexcept_spec (tree expr, int complain)
LOOKUP_NORMAL);
expr = cxx_constant_value (expr);
}
- if (expr == boolean_true_node)
- return noexcept_true_spec;
- else if (expr == boolean_false_node)
- return noexcept_false_spec;
+ if (TREE_CODE (expr) == INTEGER_CST)
+ {
+ if (operand_equal_p (expr, boolean_true_node, 0))
+ return noexcept_true_spec;
+ else
+ {
+ gcc_checking_assert (operand_equal_p (expr, boolean_false_node, 0));
+ return noexcept_false_spec;
+ }
+ }
else if (expr == error_mark_node)
return error_mark_node;
else
{
- gcc_assert (processing_template_decl || expr == error_mark_node
+ gcc_assert (processing_template_decl
|| TREE_CODE (expr) == DEFERRED_NOEXCEPT);
return build_tree_list (expr, NULL_TREE);
}