diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-04-26 03:16:45 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-04-26 03:16:45 +0000 |
| commit | 359087cadeea9d4637622b977f79dd2c57620316 (patch) | |
| tree | 0a9e8ca11b17b2eccd9ccc28ee9afbc4003913a8 | |
| parent | 3634c66b41840a88fef7ea0f87ef64fe75316020 (diff) | |
| download | bcm5719-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.h | 4 | ||||
| -rw-r--r-- | clang/test/SemaCXX/cxx0x-initializer-references.cpp | 5 |
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 }; +} |

