diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2010-01-25 18:30:26 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-01-25 18:30:26 +0000 |
| commit | 210031b79c35df85163d510355a89d7f02a9b7e3 (patch) | |
| tree | 39910ef6af1b803158503ba12a657c40377dab26 | |
| parent | fc060e43376a8ab07e0310db7b27b2232e3f08a8 (diff) | |
| download | bcm5719-llvm-210031b79c35df85163d510355a89d7f02a9b7e3.tar.gz bcm5719-llvm-210031b79c35df85163d510355a89d7f02a9b7e3.zip | |
Fix a code gen. bug involving compiling global references.
(fixes radar 7574896).
llvm-svn: 94434
| -rw-r--r-- | clang/lib/CodeGen/CGDeclCXX.cpp | 4 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/reference-init.cpp | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGDeclCXX.cpp b/clang/lib/CodeGen/CGDeclCXX.cpp index 47773a0d69e..2d473de47ca 100644 --- a/clang/lib/CodeGen/CGDeclCXX.cpp +++ b/clang/lib/CodeGen/CGDeclCXX.cpp @@ -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 diff --git a/clang/test/CodeGenCXX/reference-init.cpp b/clang/test/CodeGenCXX/reference-init.cpp index 6c2c6a30168..61ae2daffda 100644 --- a/clang/test/CodeGenCXX/reference-init.cpp +++ b/clang/test/CodeGenCXX/reference-init.cpp @@ -14,3 +14,8 @@ namespace PR5911 { int iarr[] = { 1 }; int test() { return f(iarr); } } + +// radar 7574896 +struct Foo { int foo; }; +Foo& ignoreSetMutex = *(new Foo); + |

