From 93885ee97cd4a65cc773a654cb2d15b2890c81a2 Mon Sep 17 00:00:00 2001 From: Ed Schouten Date: Fri, 4 Sep 2015 16:07:39 +0000 Subject: [PATCH] Put ext_implicit_lib_function_decl in ImplicitFunctionDeclare. If we build with -Werror=implicit-function-declaration, only implicit function declarations of non-library functions throw compiler errors. For library functions, we only produce a warning. There is no way to promote both of these cases to an error without promoting other warnings. It makes little sense to introduce an additional compiler flag just to control this specific warning. In my opinion it should just be part of the same group. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@246857 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Basic/DiagnosticSemaKinds.td | 3 ++- test/Driver/implicit-function-as-error.c | 1 + test/Misc/warning-flags.c | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index ecf5c2d260..6ac5748925 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -416,7 +416,8 @@ def note_unreachable_silence : Note< /// Built-in functions. def ext_implicit_lib_function_decl : ExtWarn< - "implicitly declaring library function '%0' with type %1">; + "implicitly declaring library function '%0' with type %1">, + InGroup; def note_include_header_or_declare : Note< "include the header <%0> or explicitly provide a declaration for '%1'">; def note_previous_builtin_declaration : Note<"%0 is a builtin with type %1">; diff --git a/test/Driver/implicit-function-as-error.c b/test/Driver/implicit-function-as-error.c index 5949e2064c..356078a3f4 100644 --- a/test/Driver/implicit-function-as-error.c +++ b/test/Driver/implicit-function-as-error.c @@ -5,5 +5,6 @@ // to an error. void radar_10894044() { + printf("Hi\n"); // expected-error {{implicitly declaring library function 'printf' with type 'int (const char *, ...)'}} expected-note {{include the header or explicitly provide a declaration for 'printf'}} radar_10894044_not_declared(); // expected-error {{implicit declaration of function 'radar_10894044_not_declared' is invalid in C99}} } diff --git a/test/Misc/warning-flags.c b/test/Misc/warning-flags.c index 86274ad0bd..92cb9a0ad6 100644 --- a/test/Misc/warning-flags.c +++ b/test/Misc/warning-flags.c @@ -18,12 +18,11 @@ This test serves two purposes: The list of warnings below should NEVER grow. It should gradually shrink to 0. -CHECK: Warnings without flags (93): +CHECK: Warnings without flags (92): CHECK-NEXT: ext_excess_initializers CHECK-NEXT: ext_excess_initializers_in_char_array_initializer CHECK-NEXT: ext_expected_semi_decl_list CHECK-NEXT: ext_explicit_specialization_storage_class -CHECK-NEXT: ext_implicit_lib_function_decl CHECK-NEXT: ext_initializer_string_for_char_array_too_long CHECK-NEXT: ext_missing_declspec CHECK-NEXT: ext_missing_whitespace_after_macro_name -- 2.40.0