aboutsummaryrefslogtreecommitdiff
path: root/gcc/cppexp.c
diff options
context:
space:
mode:
authorPer Bothner <bothner@gcc.gnu.org>1996-01-22 15:40:12 -0800
committerPer Bothner <bothner@gcc.gnu.org>1996-01-22 15:40:12 -0800
commit52529158ea7d7b80ea578218c9a03d8ff6f3b0d1 (patch)
tree4c610bc58db5e76780f98f3717af42208fbd3b73 /gcc/cppexp.c
parentde5529c85d637022659a8581f854ae81230f069a (diff)
downloadgcc-52529158ea7d7b80ea578218c9a03d8ff6f3b0d1.zip
gcc-52529158ea7d7b80ea578218c9a03d8ff6f3b0d1.tar.gz
gcc-52529158ea7d7b80ea578218c9a03d8ff6f3b0d1.tar.bz2
cppexp.c (cpp_parse_expr): Set HAVE_VALUE flag for unary minus, even if skip_evaluation is true.
* cppexp.c (cpp_parse_expr): Set HAVE_VALUE flag for unary minus, even if skip_evaluation is true. From-SVN: r11085
Diffstat (limited to 'gcc/cppexp.c')
-rw-r--r--gcc/cppexp.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/gcc/cppexp.c b/gcc/cppexp.c
index b830f9b..043098a 100644
--- a/gcc/cppexp.c
+++ b/gcc/cppexp.c
@@ -279,7 +279,7 @@ static struct token tokentab2[] = {
struct operation
cpp_lex (pfile)
-cpp_reader *pfile;
+ cpp_reader *pfile;
{
register int c;
register int namelen;
@@ -793,11 +793,10 @@ cpp_parse_expr (pfile)
}
break;
case '-':
- if (skip_evaluation) ; /* do nothing */
- else if (!(top->flags & HAVE_VALUE))
+ if (!(top->flags & HAVE_VALUE))
{ /* Unary '-' */
top->value = - v2;
- if ((top->value & v2) < 0 && ! unsigned2)
+ if (!skip_evaluation && (top->value & v2) < 0 && !unsigned2)
integer_overflow (pfile);
top->unsignedp = unsigned2;
top->flags |= HAVE_VALUE;
@@ -806,7 +805,7 @@ cpp_parse_expr (pfile)
{ /* Binary '-' */
top->value = v1 - v2;
top->unsignedp = unsigned1 || unsigned2;
- if (! top->unsignedp
+ if (! top->unsignedp && ! skip_evaluation
&& ! possible_sum_sign (top->value, v2, v1))
integer_overflow (pfile);
}