diff options
author | Douglas Gregor <dgregor@apple.com> | 2012-07-31 22:15:04 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2012-07-31 22:15:04 +0000 |
commit | f4cc61d525ac0d537b0d3c72f15dfbe501d919de (patch) | |
tree | 7ebd009dddd6879043a20c62a25c2c3f7eaf42e6 | |
parent | 2c64adf672fc0d6c859946017140143781b7b8ff (diff) | |
download | bcm5719-llvm-f4cc61d525ac0d537b0d3c72f15dfbe501d919de.tar.gz bcm5719-llvm-f4cc61d525ac0d537b0d3c72f15dfbe501d919de.zip |
When testing whether we can perform copy or move initialization, be
sure to supply an initialization location. Fixes <rdar://problem/11951661>.
llvm-svn: 161084
-rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 4 | ||||
-rw-r--r-- | clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 0e5a02f3426..cab7661898b 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -6179,8 +6179,8 @@ Sema::CanPerformCopyInitialization(const InitializedEntity &Entity, Expr *InitE = Init.get(); assert(InitE && "No initialization expression"); - InitializationKind Kind = InitializationKind::CreateCopy(SourceLocation(), - SourceLocation()); + InitializationKind Kind + = InitializationKind::CreateCopy(InitE->getLocStart(), SourceLocation()); InitializationSequence Seq(*this, Entity, Kind, &InitE, 1); return !Seq.Failed(); } diff --git a/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp b/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp index 7384309f97d..f11e19ae6f2 100644 --- a/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp +++ b/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp @@ -175,3 +175,15 @@ namespace PR12436 { X x({}, 17); } + +namespace rdar11948732 { + template<typename T> struct X {}; + + struct XCtorInit { + XCtorInit(std::initializer_list<X<int>>); + }; + + void f(X<int> &xi) { + XCtorInit xc = { xi, xi }; + } +} |