aboutsummaryrefslogtreecommitdiff
path: root/libcpp/expr.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2008-05-30 14:25:09 +0000
committerTom Tromey <tromey@redhat.com>2008-05-30 14:25:09 +0000
commit871fd2908ab901810c0783dd8f4d50539d2120f8 (patch)
tree5c6c1e4ce1846b970214259abb76f69f5370d6be /libcpp/expr.c
parent12e40853d64467974a685de3e1987f524d95fa55 (diff)
gcc/testsuite
PR preprocessor/36320: * gcc.dg/cpp/pr36320.c: New file. libcpp PR preprocessor/36320: * internal.h (_cpp_parse_expr): Update. * expr.c (_cpp_parse_expr): Add 'is_if' argument. Update error messages. * directives.c (do_if): Update. (do_elif): Require expression if processing group. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@136209 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libcpp/expr.c')
-rw-r--r--libcpp/expr.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libcpp/expr.c b/libcpp/expr.c
index 2e52617a656..c0e3cbd8006 100644
--- a/libcpp/expr.c
+++ b/libcpp/expr.c
@@ -852,7 +852,7 @@ static const struct cpp_operator
stored in the 'value' field of the stack element of the operator
that precedes it. */
bool
-_cpp_parse_expr (cpp_reader *pfile)
+_cpp_parse_expr (cpp_reader *pfile, bool is_if)
{
struct op *top = pfile->op_stack;
unsigned int lex_count;
@@ -927,7 +927,7 @@ _cpp_parse_expr (cpp_reader *pfile)
SYNTAX_ERROR ("missing expression between '(' and ')'");
if (op.op == CPP_EOF && top->op == CPP_EOF)
- SYNTAX_ERROR ("#if with no expression");
+ SYNTAX_ERROR2 ("%s with no expression", is_if ? "#if" : "#elif");
if (top->op != CPP_EOF && top->op != CPP_OPEN_PAREN)
SYNTAX_ERROR2 ("operator '%s' has no right operand",
@@ -988,7 +988,8 @@ _cpp_parse_expr (cpp_reader *pfile)
if (top != pfile->op_stack)
{
- cpp_error (pfile, CPP_DL_ICE, "unbalanced stack in #if");
+ cpp_error (pfile, CPP_DL_ICE, "unbalanced stack in %s",
+ is_if ? "#if" : "#elif");
syntax_error:
return false; /* Return false on syntax error. */
}