forked from OSchip/llvm-project
PR19713: Don't warn on unused static inline functions, even if the 'inline' was
implied by 'constexpr'. llvm-svn: 208511
This commit is contained in:
parent
46013d903f
commit
a90ee35a8e
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue