summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-04-26 03:16:45 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-04-26 03:16:45 +0000
commit359087cadeea9d4637622b977f79dd2c57620316 (patch)
tree0a9e8ca11b17b2eccd9ccc28ee9afbc4003913a8
parent3634c66b41840a88fef7ea0f87ef64fe75316020 (diff)
downloadbcm5719-llvm-359087cadeea9d4637622b977f79dd2c57620316.tar.gz
bcm5719-llvm-359087cadeea9d4637622b977f79dd2c57620316.zip
PR12660: Don't crash when initializing a const reference from a braced init list
which creates a temporary by calling a constructor. llvm-svn: 155608
-rw-r--r--clang/include/clang/Sema/Initialization.h4
-rw-r--r--clang/test/SemaCXX/cxx0x-initializer-references.cpp5
2 files changed, 8 insertions, 1 deletions
diff --git a/clang/include/clang/Sema/Initialization.h b/clang/include/clang/Sema/Initialization.h
index 4433843ff86..0dd68875a9e 100644
--- a/clang/include/clang/Sema/Initialization.h
+++ b/clang/include/clang/Sema/Initialization.h
@@ -225,7 +225,9 @@ public:
/// \brief Create the initialization entity for a temporary.
static InitializedEntity InitializeTemporary(QualType Type) {
- return InitializedEntity(EK_Temporary, SourceLocation(), Type);
+ InitializedEntity Result(EK_Temporary, SourceLocation(), Type);
+ Result.TypeInfo = 0;
+ return Result;
}
/// \brief Create the initialization entity for a temporary.
diff --git a/clang/test/SemaCXX/cxx0x-initializer-references.cpp b/clang/test/SemaCXX/cxx0x-initializer-references.cpp
index d8fdd5a5a07..c4e9c907a37 100644
--- a/clang/test/SemaCXX/cxx0x-initializer-references.cpp
+++ b/clang/test/SemaCXX/cxx0x-initializer-references.cpp
@@ -85,3 +85,8 @@ namespace PR12182 {
f({1, 2});
}
}
+
+namespace PR12660 {
+ const int &i { 1 };
+ struct S { S(int); } const &s { 2 };
+}
OpenPOWER on IntegriCloud