]> granicus.if.org Git - clang/commitdiff
Fix a code gen. bug involving compiling global references.
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 25 Jan 2010 18:30:26 +0000 (18:30 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 25 Jan 2010 18:30:26 +0000 (18:30 +0000)
(fixes radar 7574896).

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

lib/CodeGen/CGDeclCXX.cpp
test/CodeGenCXX/reference-init.cpp

index 47773a0d69e3d96199e452c9bce3ba95b425a7e4..2d473de47cad7ac317fafc8904f60f6e29e54790 100644 (file)
@@ -80,8 +80,8 @@ void CodeGenFunction::EmitCXXGlobalVarDeclInit(const VarDecl &D,
     EmitDeclInit(*this, D, DeclPtr);
     return;
   }
-
-  ErrorUnsupported(Init, "global variable that binds to a reference");
+  RValue RV = EmitReferenceBindingToExpr(Init, T, /*IsInitializer=*/true);
+  EmitStoreOfScalar(RV.getScalarVal(), DeclPtr, false, T);
 }
 
 void
index 6c2c6a301681da12bc9a68850f13694e5049a9d1..61ae2daffda4740aa5577a8a1ac452531537963c 100644 (file)
@@ -14,3 +14,8 @@ namespace PR5911 {
   int iarr[] = { 1 };
   int test() { return f(iarr); }
 }
+
+// radar 7574896
+struct Foo { int foo; };
+Foo& ignoreSetMutex = *(new Foo);
+