]> granicus.if.org Git - clang/commitdiff
When evaluating integer expressions include a check for sub-expressions
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Mon, 27 Feb 2012 23:18:37 +0000 (23:18 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Mon, 27 Feb 2012 23:18:37 +0000 (23:18 +0000)
depth and error if we exceed a max value, to make sure we avoid a stack overflow.

This is a hacky temporary fix. rdar://10913206.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151585 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticASTKinds.td
lib/AST/ExprConstant.cpp
test/Sema/many-logical-ops.c [new file with mode: 0644]

index 9cfe5efae259a3a0aef54e5ee4cf6491b5d69ab5..bad80b668b1dc739cd397133d51a02e546e33379 100644 (file)
@@ -107,6 +107,11 @@ def note_constexpr_calls_suppressed : Note<
   "see all)">;
 def note_constexpr_call_here : Note<"in call to '%0'">;
 
+// FIXME: See EvalInfo::IntExprEvaluatorDepth.
+def err_intexpr_depth_limit_exceeded : Error<
+  "integer expression evaluation exceeded maximum sub-expression depth">,
+  DefaultFatal; // avoid emitting it multiple times for the same parent expr.
+
 // inline asm related.
 let CategoryName = "Inline Assembly Issue" in {
   def err_asm_invalid_escape : Error<
index 44e41864f0b3a373fe3efb276a0a93c609fbe58d..31750ead25cd1699f6ec012266c55040b76b83b2 100644 (file)
@@ -44,6 +44,7 @@
 #include "clang/Basic/Builtins.h"
 #include "clang/Basic/TargetInfo.h"
 #include "llvm/ADT/SmallString.h"
+#include "llvm/ADT/SaveAndRestore.h"
 #include <cstring>
 #include <functional>
 
@@ -445,13 +446,18 @@ namespace {
     /// are suppressed.
     bool CheckingPotentialConstantExpression;
 
+    /// \brief Stack depth of IntExprEvaluator.
+    /// We check this against a maximum value to avoid stack overflow, see
+    /// test case in test/Sema/many-logical-ops.c.
+    // FIXME: This is a hack; handle properly unlimited logical ops.
+    unsigned IntExprEvaluatorDepth;
 
     EvalInfo(const ASTContext &C, Expr::EvalStatus &S)
       : Ctx(const_cast<ASTContext&>(C)), EvalStatus(S), CurrentCall(0),
         CallStackDepth(0), NextCallIndex(1),
         BottomFrame(*this, SourceLocation(), 0, 0, 0),
         EvaluatingDecl(0), EvaluatingDeclValue(0), HasActiveDiagnostic(false),
-        CheckingPotentialConstantExpression(false) {}
+        CheckingPotentialConstantExpression(false), IntExprEvaluatorDepth(0) {}
 
     const CCValue *getOpaqueValue(const OpaqueValueExpr *e) const {
       MapTy::const_iterator i = OpaqueValues.find(e);
@@ -4067,6 +4073,20 @@ public:
 
   bool ZeroInitialization(const Expr *E) { return Success(0, E); }
 
+  // FIXME: See EvalInfo::IntExprEvaluatorDepth.
+  bool Visit(const Expr *E) {
+    SaveAndRestore<unsigned> Depth(Info.IntExprEvaluatorDepth,
+                                   Info.IntExprEvaluatorDepth+1);
+    const unsigned MaxDepth = 512;
+    if (Depth.get() > MaxDepth) {
+      Info.Ctx.getDiagnostics().Report(E->getExprLoc(),
+                                       diag::err_intexpr_depth_limit_exceeded);
+      return false;
+    }
+
+    return ExprEvaluatorBaseTy::Visit(E);
+  }
+
   //===--------------------------------------------------------------------===//
   //                            Visitor Methods
   //===--------------------------------------------------------------------===//
diff --git a/test/Sema/many-logical-ops.c b/test/Sema/many-logical-ops.c
new file mode 100644 (file)
index 0000000..8cbce29
--- /dev/null
@@ -0,0 +1,2011 @@
+// RUN: %clang_cc1 -fsyntax-only -Wconstant-conversion -verify %s
+
+// rdar://10913206
+// Check that we don't get stack overflow trying to evaluate a huge number of
+// logical operators.
+
+int foo(int x) {
+  return
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    // FIXME: error is temporary.
+    x && // expected-error {{integer expression evaluation exceeded maximum sub-expression dept}}
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x &&
+    x;
+}