https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109110

            Bug ID: 109110
           Summary: Function Declaration Syntax errors at callsite
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: bthomas at brave dot com
  Target Milestone: ---

https://godbolt.org/z/Y8rbd35xP

```C
void func1(a)
int a[];
{
}

void func2(int a[])
{
}

int main(void) {
    Foo f;

    func1(f);
    func1(1.0);

    func2(f);
    func2(1.0);
        return 0;
}
```

These two Syntax for declaring a function works fine, however they behave
completely different.

`func2` gives compilation errors:

```
error: incompatible type for argument 1 of 'func2'
expected 'int *' but argument is of type 'Foo'
expected 'int *' but argument is of type 'double'
```

However, `func1` compiles and runs just fine. In fact, if I put a printf to
print the argument, `func1` will also give no warnings even with `-Werror`
unless I explicitly specific `-Wformat`, but `func2` will.

in Clang, all of the above gives both errors and warnings and won't compile.

Reply via email to