diff --git a/interpreter/cling/lib/Interpreter/DynamicLookup.cpp b/interpreter/cling/lib/Interpreter/DynamicLookup.cpp
index 486f2abe5dffbf2fbc118556a9ea95f119eff278..6d9bc478db4cbccb9acf6d7eabf2b46df6f875b8 100644
--- a/interpreter/cling/lib/Interpreter/DynamicLookup.cpp
+++ b/interpreter/cling/lib/Interpreter/DynamicLookup.cpp
@@ -512,6 +512,9 @@ namespace cling {
   }
 
   ASTNodeInfo EvaluateTSynthesizer::VisitBinaryOperator(BinaryOperator* Node) {    
+    ASTNodeInfo rhs = Visit(Node->getRHS());
+    ASTNodeInfo lhs;
+
     if (const DeclRefExpr* DRE = dyn_cast<DeclRefExpr>(Node->getLHS())) {
       const Decl* D = DRE->getDecl();
       if (const AnnotateAttr* A = D->getAttr<AnnotateAttr>())
@@ -519,16 +522,15 @@ namespace cling {
           return ASTNodeInfo(Node, /*needs eval*/false);
     }
 
-    ASTNodeInfo rhs = Visit(Node->getRHS());
-    ASTNodeInfo lhs = Visit(Node->getLHS());
+    lhs = Visit(Node->getLHS());
+
     assert((lhs.hasSingleNode() || rhs.hasSingleNode()) &&
            "1:N replacements are not implemented yet!");
 
     // Try find out the type of the left-hand-side of the operator
     // and give the hint to the right-hand-side in order to replace the
     // dependent symbol
-    if (Node->isAssignmentOp() &&
-        rhs.isForReplacement() &&
+    if (Node->isAssignmentOp() && rhs.isForReplacement() &&
         !lhs.isForReplacement()) {
       if (Expr* LHSExpr = lhs.getAs<Expr>())
         if (!IsArtificiallyDependent(LHSExpr)) {