<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - struct definition leaks out of function prototype scope"
   href="https://bugs.llvm.org/show_bug.cgi?id=39925">39925</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>struct definition leaks out of function prototype scope
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>-New Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>anders.granlund.0@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>htmldeveloper@gmail.com, llvm-bugs@lists.llvm.org, neeilans@live.com, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>The following C11 program (prog.c) should compile without error:

  struct T;

  void f(
    struct S {
      struct T {
        int a;
      } *b;
    }
  );

  struct T {
    int c;
  };

  int main()
  {
  }

When I compile it with  clang prog.c -std=c11 -pedantic-errors "-w"  i get the
following unexpected error:

  error: redefinition of 'T'

This is wrong since the struct definition inside the function declaration has
function prototype scope and therefore should be independent of the struct
definition in the file scope.

Online compiler link:

  <a href="https://wandbox.org/permlink/UpaD0znT5jkohSNP">https://wandbox.org/permlink/UpaD0znT5jkohSNP</a>

Note that gcc does not give any errors.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>