<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:black">Hi Clang developers,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">We here at Sony are continuing to update the Lit tests for C++ dialects compatibility.<o:p></o:p></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. http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150727/134667.html)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">In this second patch, there is 1 complicated change and 3 simple changes.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">Here is the complicated change first.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">test/Sema/switch-1.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> This test verifies the diagnostics for integer overflows.<o:p></o:p></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],<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> The diagnostics have changed from “overflow in expression” to “not a constant expression”.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> Usually we would create a C++11 version of the switch-1.c file.<o:p></o:p></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.)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> Normally ‘// expected-error’ does not honor any ‘#ifdef’.<o:p></o:p></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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> We then run the preprocessed file at the desired dialect.<o:p></o:p></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<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">Here are the simple changes.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">test/Analysis/temp-obj-dtors-cfg-output.cpp<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> This test verifies CFG dump for temporary destructors<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> C++11 no longer has the following implicit cast.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> (ImplicitCastExpr, NoOp, const struct D)<o:p></o:p></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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">test/CodeCompletion/ordinary-name.cpp<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> This test verifies for code completion patterns.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> Since C++11 has more keywords than C++98,<o:p></o:p></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.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">test/CodeCompletion/ordinary-name-cxx11.cpp<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> This is the C++11 specific version of the code completion.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> This test added patterns for the following keywords:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> char16, char32, noexcept, nullptr, sizeof...,
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> auto, decltype, char16_t, char32_t<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">test/Sema/thread-specifier.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> Tests for __thread specifier at various C++ dialects<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"> We made the default RUN line explicit to be at –std=c++98<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">If there is anything that seems confusing to you, please let me know.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">I would be more than happy to expand on the reasons for the these changes.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:black">Charles<o:p></o:p></span></p>
</div>
</body>
</html>