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

            Bug ID: 88716
           Summary: Improved diagnostics: No detection of conflicting
                    function definitions in some cases.
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: anders.granlund.0 at gmail dot com
  Target Milestone: ---

Consider the following two test cases (prog1.c):

  void f(x)
    int x;
  {
  }

  void f(int, int);

  void f();

  int main() {}

and (prog2.c):

  void f(x)
    int x;
  {
  }

  void f();

  void f(int, int);

  int main() {}

Both have compile time undefined behaviour because of conflicting declarations
of the function f.

The only difference between them is the reordering of the two last
declarations.

When the first test case is compiled with 

  gcc prog1.c -Wall -Wextra -std=c11 -pedantic-errors

The undefined behaviour is detected and an error message is outputed.

When the second test case is compiled with

  gcc prog2.c -Wall -Wextra -std=c11 -pedantic-errors

The undefined behaviour is not detected.

It would be good if gcc could detect the undefined behaviour even in the second
case.

Reply via email to