diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2015-07-01 00:29:28 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2015-07-01 00:29:28 +0000 |
| commit | 3c20ab2f2c5e1e081012e765a0dfe152933c08a1 (patch) | |
| tree | 87aba7476754d5da843324c2cedf076fc0770188 /clang/lib/Sema/SemaTemplateDeduction.cpp | |
| parent | 298ac300b24c4efe5fb5e1738f663b1a9744a657 (diff) | |
| download | bcm5719-llvm-3c20ab2f2c5e1e081012e765a0dfe152933c08a1.tar.gz bcm5719-llvm-3c20ab2f2c5e1e081012e765a0dfe152933c08a1.zip | |
[Sema] Don't crash when deduction fails for decltype(auto)
We didn't check the return result of BuildDecltypeType, resulting in us
crashing when we tried to grab the canonical version of the type.
This fixes PR23995.
llvm-svn: 241131
Diffstat (limited to 'clang/lib/Sema/SemaTemplateDeduction.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaTemplateDeduction.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp index 02e59af558b..ae8157e70a6 100644 --- a/clang/lib/Sema/SemaTemplateDeduction.cpp +++ b/clang/lib/Sema/SemaTemplateDeduction.cpp @@ -3968,6 +3968,8 @@ Sema::DeduceAutoType(TypeLoc Type, Expr *&Init, QualType &Result) { } QualType Deduced = BuildDecltypeType(Init, Init->getLocStart(), false); + if (Deduced.isNull()) + return DAR_FailedAlreadyDiagnosed; // FIXME: Support a non-canonical deduced type for 'auto'. Deduced = Context.getCanonicalType(Deduced); Result = SubstituteAutoTransform(*this, Deduced).Apply(Type); |

