diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-11-01 23:38:37 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-11-01 23:38:37 +0000 |
| commit | 4d629b80237c0a42601b7e1bc02202e3c33183bf (patch) | |
| tree | 9c97d165807b8a46f28fbce4f9258064697900a1 /clang/lib/Sema/SemaDecl.cpp | |
| parent | 03aeeb09c53923072d561d004b6f682664a2eb8c (diff) | |
| download | bcm5719-llvm-4d629b80237c0a42601b7e1bc02202e3c33183bf.tar.gz bcm5719-llvm-4d629b80237c0a42601b7e1bc02202e3c33183bf.zip | |
Fix missing -Wregister warning when 'register' is applied to a function parameter.
llvm-svn: 317140
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index d68b430bae8..0c00ef7e26c 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -11718,6 +11718,14 @@ Decl *Sema::ActOnParamDeclarator(Scope *S, Declarator &D) { StorageClass SC = SC_None; if (DS.getStorageClassSpec() == DeclSpec::SCS_register) { SC = SC_Register; + // In C++11, the 'register' storage class specifier is deprecated. + // In C++17, it is not allowed, but we tolerate it as an extension. + if (getLangOpts().CPlusPlus11) { + Diag(DS.getStorageClassSpecLoc(), + getLangOpts().CPlusPlus1z ? diag::ext_register_storage_class + : diag::warn_deprecated_register) + << FixItHint::CreateRemoval(DS.getStorageClassSpecLoc()); + } } else if (getLangOpts().CPlusPlus && DS.getStorageClassSpec() == DeclSpec::SCS_auto) { SC = SC_Auto; |

