aboutsummaryrefslogtreecommitdiff
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
commit6e4a0af697eec5b0c47ccf96dff170af56df826d (patch)
treec6a615db57564d0150eea0c68d2fbb05ffd3275f
parent4f50c50e783461ea1ec47dd6fe9be10aafcd76ad (diff)
PR12660: Don't crash when initializing a const reference from a braced init list
which creates a temporary by calling a constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155608 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Sema/Initialization.h4
-rw-r--r--test/SemaCXX/cxx0x-initializer-references.cpp5
2 files changed, 8 insertions, 1 deletions
diff --git a/include/clang/Sema/Initialization.h b/include/clang/Sema/Initialization.h
index 4433843ff8..0dd68875a9 100644
--- a/include/clang/Sema/Initialization.h
+++ b/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/test/SemaCXX/cxx0x-initializer-references.cpp b/test/SemaCXX/cxx0x-initializer-references.cpp
index d8fdd5a5a0..c4e9c907a3 100644
--- a/test/SemaCXX/cxx0x-initializer-references.cpp
+++ b/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 };
+}