diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-05-11 21:25:24 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-05-11 21:25:24 +0000 |
commit | a90ee35a8e245feea5d60639a1d4aba84fa040d7 (patch) | |
tree | 8e55aa3ebf5a480212da47295f8351997e5c9126 /clang | |
parent | 46013d903f174b84edf9df1b444daa3f2c57358c (diff) | |
download | bcm5719-llvm-a90ee35a8e245feea5d60639a1d4aba84fa040d7.tar.gz bcm5719-llvm-a90ee35a8e245feea5d60639a1d4aba84fa040d7.zip |
PR19713: Don't warn on unused static inline functions, even if the 'inline' was
implied by 'constexpr'.
llvm-svn: 208511
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 5 | ||||
-rw-r--r-- | clang/test/SemaCXX/warn-unused-filescoped.cpp | 15 |
2 files changed, 18 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index b7c681f08e2..67c78ce904a 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -1219,8 +1219,7 @@ bool Sema::ShouldWarnIfUnusedFileScopedDecl(const DeclaratorDecl *D) const { return false; } else { // 'static inline' functions are defined in headers; don't warn. - if (FD->isInlineSpecified() && - !isMainFileLoc(*this, FD->getLocation())) + if (FD->isInlined() && !isMainFileLoc(*this, FD->getLocation())) return false; } @@ -1245,6 +1244,8 @@ bool Sema::ShouldWarnIfUnusedFileScopedDecl(const DeclaratorDecl *D) const { } // Only warn for unused decls internal to the translation unit. + // FIXME: This seems like a bogus check; it suppresses -Wunused-function + // for inline functions defined in the main source file, for instance. return mightHaveNonExternalLinkage(D); } diff --git a/clang/test/SemaCXX/warn-unused-filescoped.cpp b/clang/test/SemaCXX/warn-unused-filescoped.cpp index b0af5b33227..df4c47e7178 100644 --- a/clang/test/SemaCXX/warn-unused-filescoped.cpp +++ b/clang/test/SemaCXX/warn-unused-filescoped.cpp @@ -32,6 +32,13 @@ namespace test7 inline void bar(int, int) { } }; +namespace pr19713 { +#if __cplusplus >= 201103L + static constexpr int constexpr1() { return 1; } + constexpr int constexpr2() { return 2; } +#endif +} + #else #define HEADER #include "warn-unused-filescoped.cpp" @@ -193,4 +200,12 @@ void bar() { void func() __attribute__((used)); } static void func() {} } +namespace pr19713 { +#if __cplusplus >= 201103L + // FIXME: We should warn on both of these. + static constexpr int constexpr3() { return 1; } // expected-warning {{unused}} + constexpr int constexpr4() { return 2; } +#endif +} + #endif |