Remove BlockDeclRefExpr and introduce a bit on DeclRefExpr to
track whether the referenced declaration comes from an enclosing
local context.  I'm amenable to suggestions about the exact meaning
of this bit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152491 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGExprComplex.cpp b/lib/CodeGen/CGExprComplex.cpp
index 7be8844..c5b705f 100644
--- a/lib/CodeGen/CGExprComplex.cpp
+++ b/lib/CodeGen/CGExprComplex.cpp
@@ -111,23 +111,16 @@
   }
 
   // l-values.
-  ComplexPairTy emitDeclRef(ValueDecl *VD, Expr *refExpr) {
-    if (CodeGenFunction::ConstantEmission result
-          = CGF.tryEmitAsConstant(VD, refExpr)) {
+  ComplexPairTy VisitDeclRefExpr(DeclRefExpr *E) {
+    if (CodeGenFunction::ConstantEmission result = CGF.tryEmitAsConstant(E)) {
       if (result.isReference())
-        return EmitLoadOfLValue(result.getReferenceLValue(CGF, refExpr));
+        return EmitLoadOfLValue(result.getReferenceLValue(CGF, E));
 
       llvm::ConstantStruct *pair =
         cast<llvm::ConstantStruct>(result.getValue());
       return ComplexPairTy(pair->getOperand(0), pair->getOperand(1));
     }
-    return EmitLoadOfLValue(refExpr);
-  }
-  ComplexPairTy VisitDeclRefExpr(DeclRefExpr *E) {
-    return emitDeclRef(E->getDecl(), E);
-  }
-  ComplexPairTy VisitBlockDeclRefExpr(BlockDeclRefExpr *E) {
-    return emitDeclRef(E->getDecl(), E);
+    return EmitLoadOfLValue(E);
   }
   ComplexPairTy VisitObjCIvarRefExpr(ObjCIvarRefExpr *E) {
     return EmitLoadOfLValue(E);