aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpplib.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cpplib.c')
-rw-r--r--gcc/cpplib.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/cpplib.c b/gcc/cpplib.c
index 7092cc0..f8a702d8 100644
--- a/gcc/cpplib.c
+++ b/gcc/cpplib.c
@@ -1689,7 +1689,7 @@ find_answer (node, candidate)
/* Test an assertion within a preprocessor conditional. Returns
nonzero on failure, zero on success. On success, the result of
- the test is written into VALUE. */
+ the test is written into VALUE, otherwise the value 0. */
int
_cpp_test_assertion (pfile, value)
cpp_reader *pfile;
@@ -1699,6 +1699,11 @@ _cpp_test_assertion (pfile, value)
cpp_hashnode *node;
node = parse_assertion (pfile, &answer, T_IF);
+
+ /* For recovery, an erroneous assertion expression is handled as a
+ failing assertion. */
+ *value = 0;
+
if (node)
*value = (node->type == NT_ASSERTION &&
(answer == 0 || *find_answer (node, answer) != 0));