The code is ill-formed. We're supposed to catch this due to [basic.scope.block]p2: "A parameter name shall not be redeclared in the outermost block of the function definition" but our check for that seems to be broken or missing.<div>
<br><div class="gmail_quote">On Mon, Aug 5, 2013 at 8:25 PM, Tom Honermann <span dir="ltr"><<a href="mailto:thonermann@coverity.com" target="_blank">thonermann@coverity.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Clang 3.3, when compiled with assertions enabled, fails an assertion for the following test case.  I believe this code is ill-formed, but at least some versions of gcc accept this test case (I tested 4.6.3 and 4.8.0).  Clang 3.2 accepts this test case as well.<br>

<br>
I filed a bug report for the assertion failure [1], but thought it would be good to clarify expected behavior on the mailing list.<br>
<br>
$ cat t.cpp<br>
struct S;<br>
void f(S *s) {<br>
    extern S *s;<br>
    s;<br>
}<br>
<br>
$ clang --version<br>
clang version 3.3 (tags/RELEASE_33/final)<br>
Target: x86_64-unknown-linux-gnu<br>
Thread model: posix<br>
<br>
$ clang -c t.cpp<br>
clang: llvm-3.3/tools/clang/lib/AST/<u></u>Decl.cpp:932: void clang::NamedDecl::<u></u>verifyLinkage() const: Assertion `!D || D->CachedLinkage == CachedLinkage' failed.<br>
<br>
[1]: <a href="http://llvm.org/bugs/show_bug.cgi?id=16804" target="_blank">http://llvm.org/bugs/show_bug.<u></u>cgi?id=16804</a><br>
<br>
Tom.<br>
<br>
______________________________<u></u>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div>