зеркало из https://github.com/microsoft/clang-1.git
Add support for -Wimplicit-function-declaration, rdar://5907433
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50672 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
44cbbb05f5
Коммит
37d1084efc
|
@ -475,6 +475,9 @@ static llvm::cl::opt<bool>
|
||||||
WarnUndefMacros("Wundef",
|
WarnUndefMacros("Wundef",
|
||||||
llvm::cl::desc("Warn on use of undefined macros in #if's"));
|
llvm::cl::desc("Warn on use of undefined macros in #if's"));
|
||||||
|
|
||||||
|
static llvm::cl::opt<bool>
|
||||||
|
WarnImplicitFunctionDeclaration("Wimplicit-function-declaration"
|
||||||
|
"Warn about use of implicitly defined functions");
|
||||||
|
|
||||||
/// InitializeDiagnostics - Initialize the diagnostic object, based on the
|
/// InitializeDiagnostics - Initialize the diagnostic object, based on the
|
||||||
/// current command line option settings.
|
/// current command line option settings.
|
||||||
|
@ -498,6 +501,10 @@ static void InitializeDiagnostics(Diagnostic &Diags) {
|
||||||
if (!WarnUndefMacros)
|
if (!WarnUndefMacros)
|
||||||
Diags.setDiagnosticMapping(diag::warn_pp_undef_identifier,diag::MAP_IGNORE);
|
Diags.setDiagnosticMapping(diag::warn_pp_undef_identifier,diag::MAP_IGNORE);
|
||||||
|
|
||||||
|
if (!WarnImplicitFunctionDeclaration)
|
||||||
|
Diags.setDiagnosticMapping(diag::warn_implicit_function_decl,
|
||||||
|
diag::MAP_IGNORE);
|
||||||
|
|
||||||
if (MSExtensions) // MS allows unnamed struct/union fields.
|
if (MSExtensions) // MS allows unnamed struct/union fields.
|
||||||
Diags.setDiagnosticMapping(diag::w_no_declarators, diag::MAP_IGNORE);
|
Diags.setDiagnosticMapping(diag::w_no_declarators, diag::MAP_IGNORE);
|
||||||
|
|
||||||
|
|
|
@ -1268,9 +1268,10 @@ Sema::DeclTy *Sema::ActOnFinishFunctionBody(DeclTy *D, StmtTy *Body) {
|
||||||
/// call, forming a call to an implicitly defined function (per C99 6.5.1p2).
|
/// call, forming a call to an implicitly defined function (per C99 6.5.1p2).
|
||||||
ScopedDecl *Sema::ImplicitlyDefineFunction(SourceLocation Loc,
|
ScopedDecl *Sema::ImplicitlyDefineFunction(SourceLocation Loc,
|
||||||
IdentifierInfo &II, Scope *S) {
|
IdentifierInfo &II, Scope *S) {
|
||||||
if (getLangOptions().C99) // Extension in C99.
|
// Extension in C99. Legal in C90, but warn about it.
|
||||||
|
if (getLangOptions().C99)
|
||||||
Diag(Loc, diag::ext_implicit_function_decl, II.getName());
|
Diag(Loc, diag::ext_implicit_function_decl, II.getName());
|
||||||
else // Legal in C90, but warn about it.
|
else
|
||||||
Diag(Loc, diag::warn_implicit_function_decl, II.getName());
|
Diag(Loc, diag::warn_implicit_function_decl, II.getName());
|
||||||
|
|
||||||
// FIXME: handle stuff like:
|
// FIXME: handle stuff like:
|
||||||
|
|
Загрузка…
Ссылка в новой задаче