<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Aug 17, 2015 at 9:56 AM, Li, Charles via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="color:black">Hi Clang developers,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">We here at Sony are continuing to update the Lit tests for C++ dialects compatibility.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">Attached is the second patch. (As a reference, here is the link to the discussion on the previous Lit patch. <a href="http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150727/134667.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150727/134667.html</a>)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">In this second patch, there is 1 complicated change and 3 simple changes.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">Here is the complicated change first.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">test/Sema/switch-1.c<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  This test verifies the diagnostics for integer overflows.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  Due to C++11’s more strict requirements on constant-expressions in 5.19p2 [expr.const],<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  The diagnostics have changed from “overflow in expression” to “not a constant expression”.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  <u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  Usually we would create a C++11 version of the switch-1.c file.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  But here we propose a novel approach to “#ifdef” the expected diagnostics. (We hope to use this approach for all similar cases in the future.)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  Normally ‘// expected-error’ does not honor any ‘#ifdef’.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  But if we first preprocess the source into a temporary file, only the valid ‘#ifdef’ sections remain.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  We then run the preprocessed file at the desired dialect.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  The main downside to this approach is If the test fails, the errors are reported on the temporary file, not on the original file, and the line numbers of these two files  do not match</span></p></div></div></blockquote><div><br></div><div>The only thing novel about this approach is using the preprocessor to achieve it. -verify *does* respect #ifdef, and we have a lot of tests that rely on that.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple"><div>
<p class="MsoNormal"><span style="color:black">Here are the simple changes.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">test/Analysis/temp-obj-dtors-cfg-output.cpp<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  This test verifies CFG dump for temporary destructors<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  C++11 no longer has the following implicit cast.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">    (ImplicitCastExpr, NoOp, const struct D)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  We modified the test using the #ifdef approach to have the preprocessor generate the desired CHECK lines.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">test/CodeCompletion/ordinary-name.cpp<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  This test verifies for code completion patterns.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  Since C++11 has more keywords than C++98,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  We made this test to be C++98 specific, and create a separate C++11 version.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">test/CodeCompletion/ordinary-name-cxx11.cpp<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  This is the C++11 specific version of the code completion.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  This test added patterns for the following keywords:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">    char16, char32, noexcept, nullptr, sizeof...,
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">    auto, decltype, char16_t, char32_t<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">test/Sema/thread-specifier.c<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  Tests for __thread specifier at various C++ dialects<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">  We made the default RUN line explicit to be at –std=c++98<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">If there is anything that seems confusing to you, please let me know.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">I would be more than happy to expand on the reasons for the these changes.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="color:black">Thanks,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:black">Charles<u></u><u></u></span></p>
</div>
</div>

<br>_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
<br></blockquote></div><br></div></div>