diff options
author | Douglas Gregor <dgregor@apple.com> | 2012-02-20 20:05:29 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2012-02-20 20:05:29 +0000 |
commit | ee18803f163c4ffcbc8f55a1aae48514d4f80521 (patch) | |
tree | ff5108df89a52c1b9b5a097ad05e88edb8cce551 | |
parent | be580e5d31c20d98e5b1da536dc874527e093b20 (diff) |
When we resolve the type of an 'auto' variable, clear out the linkage
of that variable; it will need to be recomputed with the resolved
type.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150984 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 3 | ||||
-rw-r--r-- | test/CodeGenCXX/lambda-expressions.cpp | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index f385b50c3a..6c54424c97 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -6101,7 +6101,8 @@ void Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init, } VDecl->setTypeSourceInfo(DeducedType); VDecl->setType(DeducedType->getType()); - + VDecl->ClearLinkageCache(); + // In ARC, infer lifetime. if (getLangOptions().ObjCAutoRefCount && inferObjCARCLifetime(VDecl)) VDecl->setInvalidDecl(); diff --git a/test/CodeGenCXX/lambda-expressions.cpp b/test/CodeGenCXX/lambda-expressions.cpp index 203ca4d805..6f0fa87bb1 100644 --- a/test/CodeGenCXX/lambda-expressions.cpp +++ b/test/CodeGenCXX/lambda-expressions.cpp @@ -1,5 +1,8 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10.0.0 -emit-llvm -o - %s -fexceptions -std=c++11 | FileCheck %s +// CHECK: @var = internal global +auto var = [](int i) { return i+1; }; + int a() { return []{ return 1; }(); } // CHECK: define i32 @_Z1av // CHECK: call i32 @_ZZ1avENKUlvE_clEv |