OSDN Git Service

* cppexp.c (cpp_parse_expr): Set HAVE_VALUE flag for unary
authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Jan 1996 23:40:12 +0000 (23:40 +0000)
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Jan 1996 23:40:12 +0000 (23:40 +0000)
minus, even if skip_evaluation is true.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@11085 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cppexp.c

index b830f9b..043098a 100644 (file)
@@ -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);
                }