]> granicus.if.org Git - clang/commitdiff
Put ext_implicit_lib_function_decl in ImplicitFunctionDeclare.
authorEd Schouten <ed@nuxi.nl>
Fri, 4 Sep 2015 16:07:39 +0000 (16:07 +0000)
committerEd Schouten <ed@nuxi.nl>
Fri, 4 Sep 2015 16:07:39 +0000 (16:07 +0000)
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
test/Driver/implicit-function-as-error.c
test/Misc/warning-flags.c

index ecf5c2d26049f605898861662f8f9720f280acc9..6ac57489250ad8e6424507d747a999694ff327d8 100644 (file)
@@ -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<ImplicitFunctionDeclare>;
 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">;
index 5949e2064cee6cbf640163f3df261ca93867a0ef..356078a3f4b0635fa1dbc2a230467377b1f354ae 100644 (file)
@@ -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 <stdio.h> 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}}
 }
index 86274ad0bdb97d318ebf3f8de5cd96d2c82a996c..92cb9a0ad6c889ff14fbac5ae3dd7bd4fbc71028 100644 (file)
@@ -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