diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-06-08 16:05:07 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-06-08 16:05:07 +0000 |
commit | e56d1a0d5000e1b935803a0f77edf2124114a522 (patch) | |
tree | 5800dccb455f9ba78968cb73a3f648b554e9b148 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | a41272fb4833b6f4a472bd7aaa6ad7ca40ee8744 (diff) | |
download | bcm5719-llvm-e56d1a0d5000e1b935803a0f77edf2124114a522.tar.gz bcm5719-llvm-e56d1a0d5000e1b935803a0f77edf2124114a522.zip |
[Sema] Don't permit catching variably modified types
Variably modified types shouldn't be permitted in catch clauses.
This fixes PR28047.
llvm-svn: 272159
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 8212bd4db3f..1ab3fb2ab86 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -12207,6 +12207,11 @@ VarDecl *Sema::BuildExceptionDeclaration(Scope *S, Invalid = true; } + if (ExDeclType->isVariablyModifiedType()) { + Diag(Loc, diag::err_catch_variably_modified) << ExDeclType; + Invalid = true; + } + QualType BaseType = ExDeclType; int Mode = 0; // 0 for direct type, 1 for pointer, 2 for reference unsigned DK = diag::err_catch_incomplete; |