]> granicus.if.org Git - clang/commitdiff
global variable that binds reference to a non-lvalue reproted
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 25 Jan 2010 21:40:39 +0000 (21:40 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 25 Jan 2010 21:40:39 +0000 (21:40 +0000)
as NYI now.

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

lib/CodeGen/CGDeclCXX.cpp

index 2d473de47cad7ac317fafc8904f60f6e29e54790..3f1a7225fbc405b3650e53ec8a9555f56ea31921 100644 (file)
@@ -80,8 +80,13 @@ void CodeGenFunction::EmitCXXGlobalVarDeclInit(const VarDecl &D,
     EmitDeclInit(*this, D, DeclPtr);
     return;
   }
-  RValue RV = EmitReferenceBindingToExpr(Init, T, /*IsInitializer=*/true);
-  EmitStoreOfScalar(RV.getScalarVal(), DeclPtr, false, T);
+  if (Init->isLvalue(getContext()) == Expr::LV_Valid) {
+    RValue RV = EmitReferenceBindingToExpr(Init, T, /*IsInitializer=*/true);
+    EmitStoreOfScalar(RV.getScalarVal(), DeclPtr, false, T);
+    return;
+  }
+  ErrorUnsupported(Init, 
+                   "global variable that binds reference to a non-lvalue");
 }
 
 void