summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-07-31 22:15:04 +0000
committerDouglas Gregor <dgregor@apple.com>2012-07-31 22:15:04 +0000
commitf4cc61d525ac0d537b0d3c72f15dfbe501d919de (patch)
tree7ebd009dddd6879043a20c62a25c2c3f7eaf42e6
parent2c64adf672fc0d6c859946017140143781b7b8ff (diff)
downloadbcm5719-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.cpp4
-rw-r--r--clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp12
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 };
+ }
+}
OpenPOWER on IntegriCloud