aaronpuchert added a comment.

Note that I'm just copying GCC, which seems the be the original intent behind 
the warning (https://bugs.llvm.org/show_bug.cgi?id=20796). So people who use 
both compilers will have seen that warning already. Note also that there is no 
warning if any declaration provides a prototype, so this is fine:

  void f(void);  // provides a prototype
  void f() {}    // not a prototype, but we have one already



In D66919#1650174 <https://reviews.llvm.org/D66919#1650174>, @dexonsmith wrote:

> We could carve out a `-W` flag (if it doesn't already exist) that warns if 
> you incorrectly pass parameters to a function whose definition has no 
> prototype


The warning exists, but there is no flag apparently.

  void f() {}
  void g() {
      f(0);
  }

spits out

  test.c:3:8: warning: too many arguments in call to 'f'
      f(0);
      ~  ^

But with `f(void)` we get

  test.c:3:7: error: too many arguments to function call, expected 0, have 1
      f(0);
      ~ ^
  test.c:1:1: note: 'f' declared here
  void f(void) {}
  ^


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D66919



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to