[PATCH] D58091: Customize warnings for missing built-in type

James Y Knight via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 13 20:28:03 PST 2019


jyknight added a comment.

I think this warning (-Wbuiltin-requires-header) doesn't really make sense as its own warning.

We already have two related (on-by-default) warnings.

For declarations:

  test.c:1:6: warning: incompatible redeclaration of library function 'exit' [-Wincompatible-library-redeclaration]
  long exit(char *);
       ^
  test.c:1:6: note: 'exit' is a builtin with type 'void (int) __attribute__((noreturn))'

And for uses:

  test2.c:1:13: warning: implicitly declaring library function 'exit' with type 'void (int) __attribute__((noreturn))' [-Wimplicit-function-declaration]
  int foo() { exit(0); }
              ^
  test2.c:1:13: note: include the header <stdlib.h> or explicitly provide a declaration for 'exit'

I think for a declaration, if we cannot construct the appropriate type, we should be treating all declarations as an incompatible redeclaration, and explain why in an attached note, like:

  warning: incompatible redeclaration of library function 'exit' [-Wincompatible-library-redeclaration]
  note: missing declaration of type 'jmp_buf' for argument 1 of standard function signature.

For a usage, we could emit something like:

  warning: implicit declaration of library function 'setjmp' [-Wimplicit-function-declaration]
  note: missing declaration of type 'jmp_buf' for argument 1.
  note: include the header <setjmp.h> or explicitly provide a declaration for 'setjmp'


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58091/new/

https://reviews.llvm.org/D58091





More information about the cfe-commits mailing list