Remove manual conditional error handling code.

llvm-svn: 38540
diff --git a/clang/Lex/PPExpressions.cpp b/clang/Lex/PPExpressions.cpp
index 2e62d82..237b1f4 100644
--- a/clang/Lex/PPExpressions.cpp
+++ b/clang/Lex/PPExpressions.cpp
@@ -30,47 +30,37 @@
 ///
 /// MinPrec is the minimum precedence that this range of the expression is
 /// allowed to include.
-bool Preprocessor::EvaluateDirectiveExpression(bool &Result) {
+void Preprocessor::EvaluateDirectiveExpression(bool &Result) {
   // Peek ahead one token.
   LexerToken Tok;
-  if (Lex(Tok)) return true;
+  Lex(Tok);
 
   // In error cases, bail out with false value.
   Result = false;
   
-  bool StopParse = false;
-  
   int ResVal = 0;
-  if (EvaluateValue(ResVal, Tok, StopParse)) {
+  if (EvaluateValue(ResVal, Tok) ||
+      EvaluateDirectiveSubExpr(ResVal, 1, Tok)) {
     // Skip the rest of the macro line.
-    if (!StopParse && Tok.getKind() != tok::eom)
-      StopParse |= DiscardUntilEndOfDirective();
-    return StopParse;
-  }
-  
-  if (EvaluateDirectiveSubExpr(ResVal, 1, Tok, StopParse)) {
-    // Skip the rest of the macro line.
-    if (!StopParse && Tok.getKind() != tok::eom)
-      StopParse |= DiscardUntilEndOfDirective();
-    return StopParse;
+    if (Tok.getKind() != tok::eom)
+      DiscardUntilEndOfDirective();
+    return;
   }
   
   // If we aren't at the tok::eom token, something bad happened, like an extra
   // ')' token.
   if (Tok.getKind() != tok::eom) {
-    return Diag(Tok, diag::err_pp_expected_eol) ||
-           DiscardUntilEndOfDirective();
+    Diag(Tok, diag::err_pp_expected_eol);
+    DiscardUntilEndOfDirective();
   }
   
   Result = ResVal != 0;
-  return false;
 }
 
 /// EvaluateValue - Evaluate the token PeekTok (and any others needed) and
 /// return the computed value in Result.  Return true if there was an error
-/// parsing, setting StopParse if parsing should be aborted.
-bool Preprocessor::EvaluateValue(int &Result, LexerToken &PeekTok, 
-                                 bool &StopParse) {
+/// parsing.
+bool Preprocessor::EvaluateValue(int &Result, LexerToken &PeekTok) {
   Result = 0;
   
   // If this token's spelling is a pp-identifier, check to see if it is
@@ -81,7 +71,8 @@
     // into a simple 0.
     if (strcmp(II->getName(), "defined")) {
       Result = 0;
-      return (StopParse = Lex(PeekTok));
+      Lex(PeekTok);
+      return false;
     }
 
     // Handle "defined X" and "defined(X)".
@@ -91,20 +82,20 @@
     DisableMacroExpansion = true;
 
     // Get the next token.
-    if ((StopParse = Lex(PeekTok))) return true;
+    Lex(PeekTok);
 
     // Two options, it can either be a pp-identifier or a (.
     bool InParens = false;
     if (PeekTok.getKind() == tok::l_paren) {
       // Found a paren, remember we saw it and skip it.
       InParens = true;
-      if ((StopParse = Lex(PeekTok))) return true;
+      Lex(PeekTok);
     }
     
     // If we don't have a pp-identifier now, this is an error.
     if ((II = PeekTok.getIdentifierInfo()) == 0) {
       DisableMacroExpansion = false;
-      StopParse = Diag(PeekTok, diag::err_pp_defined_requires_identifier);
+      Diag(PeekTok, diag::err_pp_defined_requires_identifier);
       return true;
     }
     
@@ -112,16 +103,16 @@
     Result = II->getMacroInfo() != 0;
 
     // Consume identifier.
-    if ((StopParse = Lex(PeekTok))) return true;
+    Lex(PeekTok);
 
     // If we are in parens, ensure we have a trailing ).
     if (InParens) {
       if (PeekTok.getKind() != tok::r_paren) {
-        StopParse = Diag(PeekTok, diag::err_pp_missing_rparen);
+        Diag(PeekTok, diag::err_pp_missing_rparen);
         return true;
       }
       // Consume the ).
-      if ((StopParse = Lex(PeekTok))) return true;
+      Lex(PeekTok);
     }
     
     DisableMacroExpansion = false;
@@ -130,55 +121,55 @@
   
   switch (PeekTok.getKind()) {
   default:  // Non-value token.
-    StopParse = Diag(PeekTok, diag::err_pp_expr_bad_token);
+    Diag(PeekTok, diag::err_pp_expr_bad_token);
     return true;
   case tok::eom:
   case tok::r_paren:
     // If there is no expression, report and exit.
-    StopParse = Diag(PeekTok, diag::err_pp_expected_value_in_expr);
+    Diag(PeekTok, diag::err_pp_expected_value_in_expr);
     return true;
   case tok::numeric_constant: {
     // FIXME: faster.  FIXME: track signs.
     std::string Spell = Lexer::getSpelling(PeekTok, getLangOptions());
     // FIXME: COMPUTE integer constants CORRECTLY.
     Result = atoi(Spell.c_str());
-    return (StopParse = Lex(PeekTok));
+    Lex(PeekTok);
+    return false;
   }
   case tok::l_paren:
-    if (StopParse = Lex(PeekTok)) return true;  // Eat the (.
-    // Parse the value.
-    if (EvaluateValue(Result, PeekTok, StopParse)) return true;
-      
-    // If there are any binary operators involved, parse them.
-    if (EvaluateDirectiveSubExpr(Result, 1, PeekTok, StopParse))
-      return StopParse;
+    Lex(PeekTok);  // Eat the (.
+    // Parse the value and if there are any binary operators involved, parse
+    // them.
+    if (EvaluateValue(Result, PeekTok) ||
+        EvaluateDirectiveSubExpr(Result, 1, PeekTok))
+      return true;
 
     if (PeekTok.getKind() != tok::r_paren) {
-      StopParse = Diag(PeekTok, diag::err_pp_expected_rparen);
+      Diag(PeekTok, diag::err_pp_expected_rparen);
       return true;
     }
-    if (StopParse = Lex(PeekTok)) return true;  // Eat the ).
+    Lex(PeekTok);  // Eat the ).
     return false;
  
   case tok::plus:
     // Unary plus doesn't modify the value.
-    if (StopParse = Lex(PeekTok)) return true;
-    return EvaluateValue(Result, PeekTok, StopParse);
+    Lex(PeekTok);
+    return EvaluateValue(Result, PeekTok);
   case tok::minus:
-    if (StopParse = Lex(PeekTok)) return true;
-    if (EvaluateValue(Result, PeekTok, StopParse)) return true;
+    Lex(PeekTok);
+    if (EvaluateValue(Result, PeekTok)) return true;
     Result = -Result;
     return false;
     
   case tok::tilde:
-    if (StopParse = Lex(PeekTok)) return true;
-    if (EvaluateValue(Result, PeekTok, StopParse)) return true;
+    Lex(PeekTok);
+    if (EvaluateValue(Result, PeekTok)) return true;
     Result = ~Result;
     return false;
     
   case tok::exclaim:
-    if (StopParse = Lex(PeekTok)) return true;
-    if (EvaluateValue(Result, PeekTok, StopParse)) return true;
+    Lex(PeekTok);
+    if (EvaluateValue(Result, PeekTok)) return true;
     Result = !Result;
     return false;
     
@@ -240,12 +231,11 @@
 /// EvaluateDirectiveSubExpr - Evaluate the subexpression whose first token is
 /// PeekTok, and whose precedence is PeekPrec.
 bool Preprocessor::EvaluateDirectiveSubExpr(int &LHS, unsigned MinPrec,
-                                            LexerToken &PeekTok,
-                                            bool &StopParse) {
+                                            LexerToken &PeekTok) {
   unsigned PeekPrec = getPrecedence(PeekTok.getKind());
   // If this token isn't valid, report the error.
   if (PeekPrec == ~0U) {
-    StopParse = Diag(PeekTok, diag::err_pp_expr_bad_token);
+    Diag(PeekTok, diag::err_pp_expr_bad_token);
     return true;
   }
   
@@ -259,11 +249,11 @@
 
     // Consume the operator, saving the operator token for error reporting.
     LexerToken OpToken = PeekTok;
-    if (StopParse = Lex(PeekTok)) return true;
+    Lex(PeekTok);
 
     int RHS;
     // Parse the RHS of the operator.
-    if (EvaluateValue(RHS, PeekTok, StopParse)) return true;
+    if (EvaluateValue(RHS, PeekTok)) return true;
 
     // Remember the precedence of this operator and get the precedence of the
     // operator immediately to the right of the RHS.
@@ -272,7 +262,7 @@
 
     // If this token isn't valid, report the error.
     if (PeekPrec == ~0U) {
-      StopParse = Diag(PeekTok, diag::err_pp_expr_bad_token);
+      Diag(PeekTok, diag::err_pp_expr_bad_token);
       return true;
     }
     
@@ -282,7 +272,7 @@
     // more tightly with RHS than we do, evaluate it completely first.
     if (ThisPrec < PeekPrec ||
         (ThisPrec == PeekPrec && isRightAssoc)) {
-      if (EvaluateDirectiveSubExpr(RHS, ThisPrec+1, PeekTok, StopParse))
+      if (EvaluateDirectiveSubExpr(RHS, ThisPrec+1, PeekTok))
         return true;
       PeekPrec = getPrecedence(PeekTok.getKind());
     }
@@ -292,14 +282,14 @@
     default: assert(0 && "Unknown operator token!");
     case tok::percent:
       if (RHS == 0) {
-        StopParse = Diag(OpToken, diag::err_pp_remainder_by_zero);
+        Diag(OpToken, diag::err_pp_remainder_by_zero);
         return true;
       }
       LHS %= RHS;
       break;
     case tok::slash:
       if (RHS == 0) {
-        StopParse = Diag(OpToken, diag::err_pp_division_by_zero);
+        Diag(OpToken, diag::err_pp_division_by_zero);
         return true;
       }
       LHS /= RHS;
@@ -327,26 +317,25 @@
     case tok::ampamp:          LHS = LHS && RHS; break;
     case tok::pipepipe:        LHS = LHS || RHS; break;
     case tok::comma:
-      if ((StopParse = Diag(OpToken, diag::ext_pp_comma_expr)))
-        return true;
+      Diag(OpToken, diag::ext_pp_comma_expr);
       LHS = RHS; // LHS = LHS,RHS -> RHS.
       break; 
     case tok::question: {
       // Parse the : part of the expression.
       if (PeekTok.getKind() != tok::colon) {
-        StopParse = Diag(OpToken, diag::err_pp_question_without_colon);
+        Diag(OpToken, diag::err_pp_question_without_colon);
         return true;
       }
       // Consume the :.
-      if (StopParse = Lex(PeekTok)) return true;
+      Lex(PeekTok);
 
       // Evaluate the value after the :.
       int AfterColonVal = 0;
-      if (EvaluateValue(AfterColonVal, PeekTok, StopParse)) return true;
+      if (EvaluateValue(AfterColonVal, PeekTok)) return true;
 
       // Parse anything after the : RHS that has a higher precedence than ?.
       if (EvaluateDirectiveSubExpr(AfterColonVal, ThisPrec+1,
-                                   PeekTok, StopParse))
+                                   PeekTok))
         return true;
       
       // Now that we have the condition, the LHS and the RHS of the :, evaluate.
@@ -358,7 +347,7 @@
     }
     case tok::colon:
       // Don't allow :'s to float around without being part of ?: exprs.
-      StopParse = Diag(OpToken, diag::err_pp_colon_without_question);
+      Diag(OpToken, diag::err_pp_colon_without_question);
       return true;
     }
   }