<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 22, 2009, at 11:47 AM, John Thompson wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>One more:</div> <div> </div> <div>Index: test/Preprocessor/macro_paste_bcpl_comment.c<br>===================================================================<br>--- test/Preprocessor/macro_paste_bcpl_comment.c (revision 84858)<br>+++ test/Preprocessor/macro_paste_bcpl_comment.c (working copy)<br> @@ -1,4 +1,4 @@<br>-// RUN: clang-cc %s -Eonly 2>&1 | grep error<br>+// RUN: clang-cc %s -Eonly -fms-extensions=0 2>&1 | grep error<br> <br> #define COMM1 / ## /<br> COMM1<br><br>I did a little digging in the code with this one.  On Windows it definitely does treat /##/ as an extension for Microsoft mode (see TokenLexer.cpp:467).  Perhaps there is a way to test for both cases, but I'm not sure how to set it up.  Is there a way to check for grep failing or an empty file in this case?</div></blockquote><div><br></div>This patch is ok, please commit it.</div><div><br></div><div>-Chris</div><div><br><blockquote type="cite"> <div> </div> <div>-John</div> <div> </div> <div class="gmail_quote">On Wed, Oct 21, 2009 at 12:05 PM, John Thompson <span dir="ltr"><<a href="mailto:john.thompson.jtsoftware@gmail.com">john.thompson.jtsoftware@gmail.com</a>></span> wrote:<br> <blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote"> <div>By adding -fms-extensions=0 to some of the tests previously failing on Windows, it makes these 6 tests pass on Windows.</div> <div> </div> <div>The question is, are these legitimate differences between the default Clang behavior and MSVC?</div> <div> </div> <div>They seem sort of reasonable, but I'm not knowledgeable enough to say for sure.</div> <div> </div> <div>The enclosed patch contains these changes.</div> <div> </div> <div>Here is the previous test output:</div> <div> </div> <div>1>********************<br>1>FAIL: Clang::SemaTemplate/nested-name-spec-template.cpp (1664 of 1692)<br>1>******************** TEST 'Clang::SemaTemplate/nested-name-spec-template.cpp' FAILED ********************<br> 1>Script:<br>1>--<br>1>C:/Tools/llvm/bin/Debug/clang-cc.exe -fsyntax-only -verify C:\Tools\llvm\tools\clang\test\SemaTemplate\nested-name-spec-template.cpp<br>1>--<br>1>Exit Code: 1<br>1>Command Output (stdout):<br> 1>--<br>1>Command 0: "C:/Tools/llvm/bin/Debug/clang-cc.exe" "-fsyntax-only" "-verify" "C:\Tools\llvm\tools\clang\test\SemaTemplate\nested-name-spec-template.cpp"<br>1>Command 0 Result: 1<br> 1>Command 0 Output:<br>1>Command 0 Stderr:<br>1>Errors expected but not seen:<br>1>  Line 34: C++ requires a type specifier for all declarations<br>1>Warnings seen but not expected:<br>1>  Line 34: type specifier missing, defaults to 'int'<br> 1>--<br>1>Command Output (stderr):<br>1>--<br>1>--<br>1>********************<br>1>FAIL: Clang::Preprocessor/line-directive.c (903 of 1692)<br>1>******************** TEST 'Clang::Preprocessor/line-directive.c' FAILED ********************<br> 1>Script:<br>1>--<br>1>C:/Tools/llvm/bin/Debug/clang-cc.exe -fsyntax-only -verify -pedantic C:\Tools\llvm\tools\clang\test\Preprocessor\line-directive.c <br>1>C:/Tools/llvm/bin/Debug/clang-cc.exe -E C:\Tools\llvm\tools\clang\test\Preprocessor\line-directive.c 2>&1 | grep 'blonk.c:92:2: error: #error ABC' <br> 1>C:/Tools/llvm/bin/Debug/clang-cc.exe -E C:\Tools\llvm\tools\clang\test\Preprocessor\line-directive.c 2>&1 | grep 'blonk.c:93:2: error: #error DEF'<br>1>--<br>1>Exit Code: 1<br>1>Command Output (stdout):<br> 1>--<br>1>Command 0: "C:/Tools/llvm/bin/Debug/clang-cc.exe" "-fsyntax-only" "-verify" "-pedantic" "C:\Tools\llvm\tools\clang\test\Preprocessor\line-directive.c"<br>1>Command 0 Result: 1<br> 1>Command 0 Output:<br>1>Command 0 Stderr:<br>1>Errors expected but not seen:<br>1>  Line 44: redefinition of typedef 'x' is invalid in C<br>1>  Line 65: redefinition of typedef 'w' is invalid in C<br> 1>Notes expected but not seen:<br>1>  Line 43: previous definition is here<br>1>  Line 64: previous definition is here<br>1>--<br>1>Command Output (stderr):<br>1>--<br>1>--<br>1>********************<br> 1>FAIL: Clang::Parser/cxx-template-decl.cpp (793 of 1692)<br>1>******************** TEST 'Clang::Parser/cxx-template-decl.cpp' FAILED ********************<br>1>Script:<br>1>--<br>1>C:/Tools/llvm/bin/Debug/clang-cc.exe -fsyntax-only -verify C:\Tools\llvm\tools\clang\test\Parser\cxx-template-decl.cpp<br> 1>--<br>1>Exit Code: 1<br>1>Command Output (stdout):<br>1>--<br>1>Command 0: "C:/Tools/llvm/bin/Debug/clang-cc.exe" "-fsyntax-only" "-verify" "C:\Tools\llvm\tools\clang\test\Parser\cxx-template-decl.cpp"<br> 1>Command 0 Result: 1<br>1>Command 0 Output:<br>1>Command 0 Stderr:<br>1>Errors expected but not seen:<br>1>  Line 5: C++ requires a type specifier for all declarations<br>1>  Line 57: declaration of 'T' shadows template parameter<br> 1>  Line 61: declaration of 'T' shadows template parameter<br>1>  Line 64: declaration of 'T' shadows template parameter<br>1>  Line 68: declaration of 'Size' shadows template parameter<br> 1>  Line 73: shadows<br>1>  Line 78: shadows<br>1>Warnings seen but not expected:<br>1>  Line 5: type specifier missing, defaults to 'int'<br>1>Notes expected but not seen:<br>1>  Line 56: template parameter is declared here<br> 1>  Line 60: template parameter is declared here<br>1>  Line 63: template parameter is declared here<br>1>  Line 67: template parameter is declared here<br>1>  Line 71: here<br>1>  Line 76: here<br>1>--<br> 1>Command Output (stderr):<br>1>--<br>1>--<br>1>********************<br>1>FAIL: Clang::SemaCXX/implicit-int.cpp (1290 of 1692)<br>1>******************** TEST 'Clang::SemaCXX/implicit-int.cpp' FAILED ********************<br> 1>Script:<br>1>--<br>1>C:/Tools/llvm/bin/Debug/clang-cc.exe -fsyntax-only -verify C:\Tools\llvm\tools\clang\test\SemaCXX\implicit-int.cpp<br>1>--<br>1>Exit Code: 1<br>1>Command Output (stdout):<br>1>--<br> 1>Command 0: "C:/Tools/llvm/bin/Debug/clang-cc.exe" "-fsyntax-only" "-verify" "C:\Tools\llvm\tools\clang\test\SemaCXX\implicit-int.cpp"<br>1>Command 0 Result: 1<br>1>Command 0 Output:<br> 1>Command 0 Stderr:<br>1>Errors expected but not seen:<br>1>  Line 3: C++ requires a type specifier for all declarations<br>1>  Line 5: C++ requires a type specifier for all declarations<br>1>Warnings seen but not expected:<br> 1>  Line 3: type specifier missing, defaults to 'int'<br>1>  Line 5: type specifier missing, defaults to 'int'<br>1>--<br>1>Command Output (stderr):<br>1>--<br>1>--<br>1>********************<br> 1>FAIL: Clang::SemaCXX/typedef-redecl.cpp (1352 of 1692)<br>1>******************** TEST 'Clang::SemaCXX/typedef-redecl.cpp' FAILED ********************<br>1>Script:<br>1>--<br>1>C:/Tools/llvm/bin/Debug/clang-cc.exe -fsyntax-only -verify C:\Tools\llvm\tools\clang\test\SemaCXX\typedef-redecl.cpp<br> 1>--<br>1>Exit Code: 1<br>1>Command Output (stdout):<br>1>--<br>1>Command 0: "C:/Tools/llvm/bin/Debug/clang-cc.exe" "-fsyntax-only" "-verify" "C:\Tools\llvm\tools\clang\test\SemaCXX\typedef-redecl.cpp"<br> 1>Command 0 Result: 1<br>1>Command 0 Output:<br>1>Command 0 Stderr:<br>1>Errors expected but not seen:<br>1>  Line 10: redefinition of 'result_type'<br>1>Notes expected but not seen:<br>1>  Line 9: previous definition is here<br> 1>--<br>1>Command Output (stderr):<br>1>--<br>1>--<br>1>********************<br>1>FAIL: Clang::SemaCXX/nested-name-spec.cpp (1309 of 1692)<br>1>******************** TEST 'Clang::SemaCXX/nested-name-spec.cpp' FAILED ********************<br> 1>Script:<br>1>--<br>1>C:/Tools/llvm/bin/Debug/clang-cc.exe -fsyntax-only -std=c++98 -verify C:\Tools\llvm\tools\clang\test\SemaCXX\nested-name-spec.cpp<br>1>--<br>1>Exit Code: 1<br>1>Command Output (stdout):<br> 1>--<br>1>Command 0: "C:/Tools/llvm/bin/Debug/clang-cc.exe" "-fsyntax-only" "-std=c++98" "-verify" "C:\Tools\llvm\tools\clang\test\SemaCXX\nested-name-spec.cpp"<br>1>Command 0 Result: 1<br> 1>Command 0 Output:<br>1>Command 0 Stderr:<br>1>Errors expected but not seen:<br>1>  Line 171: C++ requires a type specifier for all declarations<br>1>  Line 192: C++ requires a type specifier for all declarations<br> 1>Errors seen but not expected:<br>1>  Line 195: cannot initialize 'a3' with an lvalue of type 'int'<br>1>Warnings seen but not expected:<br>1>  Line 171: type specifier missing, defaults to 'int'<br> 1>  Line 192: type specifier missing, defaults to 'int'<br>1>--<br>1>Command Output (stderr):<br>1>--<br>1>--<br><br clear="all"></div> <div></div><br>-- <br>John Thompson<br><a href="mailto:John.Thompson.JTSoftware@gmail.com" target="_blank">John.Thompson.JTSoftware@gmail.com</a><br><br></blockquote></div><br><br clear="all"> <div></div><br>-- <br>John Thompson<br><a href="mailto:John.Thompson.JTSoftware@gmail.com">John.Thompson.JTSoftware@gmail.com</a><br><br> _______________________________________________<br>cfe-dev mailing list<br><a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev<br></blockquote></div><br></body></html>