<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 - Clang rejects valid code with "anonymous types declared in an anonymous union are an extension""
   href="https://bugs.llvm.org/show_bug.cgi?id=46726">46726</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Clang rejects valid code with "anonymous types declared in an anonymous union are an extension"
          </td>
        </tr>

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

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

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </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>Frontend
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>haoxintu@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org, neeilans@live.com, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Hi, all.

This code, test.cc, is a valid code I guess, but Clang rejects this under
-pedantic-errors.

$cat test.cc
namespace g_namespace { 
    static union { union {} u; } ;
}

$clang++ -pedantic-errors test.cc
test.cc:2:21: error: anonymous types declared in an anonymous union are an
extension [-Werror,-Wnested-anon-types]
    static union  { union {} u; } ;
                    ^
1 error generated.

Apparently, "union {} u;" is not an anonymous union.

While in other mainstream compilers, gcc, icc, or msvc, they all accept this
code.

Every Clang version from 4.0 onwards behaves the same (I didn't test anything
older).

Thanks,
Haoxin</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>