<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=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@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:12.0pt;
        font-family:"Times New Roman",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-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@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="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Patch and Buildbot fixes all reverted as of –r303882.  Sorry for the thrash.<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></a></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> thakis@google.com [mailto:thakis@google.com]
<b>On Behalf Of </b>Nico Weber<br>
<b>Sent:</b> Thursday, May 25, 2017 9:16 AM<br>
<b>To:</b> Blower, Melanie <melanie.blower@intel.com><br>
<b>Cc:</b> rnk <rnk@chromium.org>; Keane, Erich <erich.keane@intel.com>; cfe-commits <cfe-commits@lists.llvm.org>; Hans Wennborg <hans@chromium.org><br>
<b>Subject:</b> RE: r303798 - For Microsoft compatibility, set fno_operator_names<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">In addition to this making clang-cl silently accept invalid code, it also breaks existing valid code, building chromium now fails. Let's revert and come up with something better asynchronously.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";background:white">FAILED: obj/third_party/WebKit/Source/core/dom/dom/CustomElementRegistry.obj
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";background:white">E:\b\c\goma_client/gomacc.exe ../../third_party/llvm-build/Release+Asserts/bin/clang-cl.exe /nologo /showIncludes /FC @obj/third_party/WebKit/Source/core/dom/dom/CustomElementRegistry.obj.rsp
 /c ../../third_party/WebKit/Source/core/dom/custom/CustomElementRegistry.cpp /Foobj/third_party/WebKit/Source/core/dom/dom/CustomElementRegistry.obj /Fd"obj/third_party/WebKit/Source/core/dom/dom_cc.pdb"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";background:white">E:\b\c\b\win_clang\src\third_party\WebKit\Source\core\dom\custom\CustomElementRegistry.cpp(229,7):  error: unknown type name 'definition'<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";background:white">  if (definition and definition->Descriptor().LocalName() == desc.LocalName()) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";background:white">      ^<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";background:white">E:\b\c\b\win_clang\src\third_party\WebKit\Source\core\dom\custom\CustomElementRegistry.cpp(229,18):  error: variable declaration in condition must have an initializer<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";background:white">  if (definition and definition->Descriptor().LocalName() == desc.LocalName()) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";background:white">                 ^<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New";background:white">2 errors generated.<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On May 24, 2017 4:01 PM, "Blower, Melanie" <<a href="mailto:melanie.blower@intel.com">melanie.blower@intel.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Thanks for the feedback, working on it…</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Keane, Erich
<br>
<b>Sent:</b> Wednesday, May 24, 2017 3:47 PM<br>
<b>To:</b> Nico Weber <<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>>; Blower, Melanie <<a href="mailto:melanie.blower@intel.com" target="_blank">melanie.blower@intel.com</a>><o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><br>
<b>Cc:</b> cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>>; rnk <<a href="mailto:rnk@chromium.org" target="_blank">rnk@chromium.org</a>><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Subject:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> RE: r303798 - For Microsoft compatibility, set fno_operator_names</span><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Adding Melanie, the author of the patch.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><a name="m_-8944411163872971623__MailEndCompose"></a><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">
<a href="mailto:thakis@google.com" target="_blank">thakis@google.com</a> [<a href="mailto:thakis@google.com" target="_blank">mailto:thakis@google.com</a>]
<b>On Behalf Of </b>Nico Weber<br>
<b>Sent:</b> Wednesday, May 24, 2017 12:43 PM<br>
<b>To:</b> Keane, Erich <<a href="mailto:erich.keane@intel.com" target="_blank">erich.keane@intel.com</a>><br>
<b>Cc:</b> cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>>; rnk <<a href="mailto:rnk@chromium.org" target="_blank">rnk@chromium.org</a>><br>
<b>Subject:</b> Re: r303798 - For Microsoft compatibility, set fno_operator_names</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Reviewed here: <a href="https://reviews.llvm.org/D33505" target="_blank">https://reviews.llvm.org/D33505</a><o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><br>
Still, please make this warn.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">On Wed, May 24, 2017 at 3:42 PM, Nico Weber <<a href="mailto:thakis@google.com" target="_blank">thakis@google.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Was this reviewed somewhere?<o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Please make it so that this emits a warning. We want clang-cl to warn on invalid code (and in system headers warnings are suppressed).<o:p></o:p></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">On Wed, May 24, 2017 at 3:31 PM, Erich Keane via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Author: erichkeane<br>
Date: Wed May 24 14:31:19 2017<br>
New Revision: 303798<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=303798&view=rev" target="_blank">
http://llvm.org/viewvc/llvm-project?rev=303798&view=rev</a><br>
Log:<br>
For Microsoft compatibility, set fno_operator_names<br>
<br>
There's a Microsoft header in the Windows SDK which won't<br>
compile with clang because it uses an operator name (and)<br>
as a field name. This patch allows that file to compile by<br>
setting the option which disables operator names.<br>
The header which doesn't compile <Query.h> C:/Program Files (x86)/<br>
Windows Kits/10/include/10.0.14393.0/um\Query.h:259:40:<br>
error: expected member name or ';' after declaration specifiers<br>
<br>
  /* [case()] */ NODERESTRICTION or;<br>
                   ~~~~~~~~~~~~~~~ ^<br>
<br>
                   1 error generated.<br>
<br>
Contributed for Melanie Blower<br>
<br>
Differential Revision:<a href="https://reviews.llvm.org/D33505" target="_blank">https://reviews.llvm.org/D33505</a><br>
<br>
Modified:<br>
    cfe/trunk/lib/Frontend/CompilerInvocation.cpp<br>
    cfe/trunk/test/Parser/MicrosoftExtensions.cpp<br>
    cfe/trunk/test/Preprocessor/cxx_oper_keyword.cpp<br>
<br>
Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=303798&r1=303797&r2=303798&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=303798&r1=303797&r2=303798&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)<br>
+++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Wed May 24 14:31:19 2017<br>
@@ -1882,7 +1882,7 @@ static void ParseLangArgs(LangOptions &O<br>
   Opts.GNUKeywords = Args.hasFlag(OPT_fgnu_keywords, OPT_fno_gnu_keywords,<br>
                                   Opts.GNUKeywords);<br>
<br>
-  if (Args.hasArg(OPT_fno_operator_names))<br>
+  if (Args.hasArg(OPT_fno_operator_names) || Args.hasArg(OPT_fms_compatibility))<br>
     Opts.CXXOperatorNames = 0;<br>
<br>
   if (Args.hasArg(OPT_fcuda_is_device))<br>
<br>
Modified: cfe/trunk/test/Parser/MicrosoftExtensions.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/MicrosoftExtensions.cpp?rev=303798&r1=303797&r2=303798&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Parser/MicrosoftExtensions.cpp?rev=303798&r1=303797&r2=303798&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Parser/MicrosoftExtensions.cpp (original)<br>
+++ cfe/trunk/test/Parser/MicrosoftExtensions.cpp Wed May 24 14:31:19 2017<br>
@@ -261,9 +261,8 @@ int __identifier(else} = __identifier(fo<br>
 #define identifier_weird(x) __identifier(x<br>
 int k = identifier_weird(if)); // expected-error {{use of undeclared identifier 'if'}}<br>
<br>
-// This is a bit weird, but the alternative tokens aren't keywords, and this<br>
-// behavior matches MSVC. FIXME: Consider supporting this anyway.<br>
-extern int __identifier(and) r; // expected-error {{cannot convert '&&' token to an identifier}}<br>
+// 'and' is not an operator name with Microsoft compatibility.<br>
+extern int __identifier(and) r; // expected-error {{expected ';' after top level declarator}}<br>
<br>
 void f() {<br>
   __identifier(() // expected-error {{cannot convert '(' token to an identifier}}<br>
@@ -355,7 +354,6 @@ void TestProperty() {<br>
   ++sp.V11;<br>
 }<br>
<br>
-//expected-warning@+1 {{C++ operator 'and' (aka '&&') used as a macro name}}<br>
 #define and foo<br>
<br>
 struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) __declspec(novtable) IUnknown {};<br>
<br>
Modified: cfe/trunk/test/Preprocessor/cxx_oper_keyword.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/cxx_oper_keyword.cpp?rev=303798&r1=303797&r2=303798&view=diff" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/cxx_oper_keyword.cpp?rev=303798&r1=303797&r2=303798&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/Preprocessor/cxx_oper_keyword.cpp (original)<br>
+++ cfe/trunk/test/Preprocessor/cxx_oper_keyword.cpp Wed May 24 14:31:19 2017<br>
@@ -1,5 +1,6 @@<br>
 // RUN: %clang_cc1 %s -E -verify -DOPERATOR_NAMES<br>
 // RUN: %clang_cc1 %s -E -verify -fno-operator-names<br>
+// RUN: %clang_cc1 %s    -verify -DTESTWIN -fms-compatibility<br>
<br>
 #ifndef OPERATOR_NAMES<br>
 //expected-error@+3 {{token is not a valid binary operator in a preprocessor subexpression}}<br>
@@ -29,3 +30,14 @@<br>
 #ifdef and<br>
 #warning and is defined<br>
 #endif<br>
+<br>
+#ifdef TESTWIN<br>
+// For cl compatibility, fno-operator-names is enabled by default.<br>
+int and;<br>
+int bitand;<br>
+int bitor;<br>
+int compl;<br>
+int not;<br>
+int or;<br>
+int xor;<br>
+#endif<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>