<div dir="rtl"><div dir="ltr">Hi Douglas,</div><div dir="ltr"><br></div><div dir="ltr">One of these Objective C patches breaks Visual C++ compilation, see</div><div dir="ltr"><br></div><div dir="ltr"> <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lab.llvm.org-3A8011_builders_clang-2Dx86-2Dwin2008-2Dselfhost_builds_1803_steps_build-2520stage-25201_logs_stdio&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=KE0P0tLiuQbS64-AkJMU6cX7N6HPyFQatQUeEWffeR8&s=MH3ixr_wpSFldMiOWPNvycdtZBYSlG0SJDaV6BieuAs&e=">http://lab.llvm.org:8011/builders/clang-x86-win2008-selfhost/builds/1803/steps/build%20stage%201/logs/stdio</a><br></div><div dir="ltr"><br></div><div dir="ltr"><pre style="font-family:'Courier New',courier,monotype,monospace;color:rgb(0,0,0);font-size:medium"><span class="">[592/1207] Building CXX object tools\clang\lib\Parse\CMakeFiles\clangParse.dir\ParseAST.cpp.obj
FAILED: C:\PROGRA~2\MICROS~1.0\VC\bin\cl.exe   /nologo /TP -wd4146 -wd4180 -wd4244 -wd4258 -wd4267 -wd4291 -wd4345 -wd4351 -wd4355 -wd4456 -wd4457 -wd4458 -wd4459 -wd4503 -wd4624 -wd4722 -wd4800 -wd4100 -wd4127 -wd4512 -wd4505 -wd4610 -wd4510 -wd4702 -wd4245 -wd4706 -wd4310 -wd4701 -wd4703 -wd4389 -wd4611 -wd4805 -wd4204 -wd4324 -w14062 -we4238 -Itools\clang\lib\Parse -IC:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\tools\clang\lib\Parse -IC:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\tools\clang\include -Itools\clang\include -Iinclude -IC:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\include    -UNDEBUG /EHs-c- /GR- /showIncludes -DCLANG_ENABLE_ARCMT -DCLANG_ENABLE_OBJC_REWRITER -DCLANG_ENABLE_STATIC_ANALYZER -DGTEST_HAS_RTTI=0 -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_GNU_SOURCE -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS /Fotools\clang\lib\Parse\CMakeFiles\clangParse.dir\ParseCXXInlineMethods.cpp.obj /Fdtools\clang\lib\Parse\CMakeFiles\clangParse.dir\ /FS -c C:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\tools\clang\lib\Parse\ParseCXXInlineMethods.cpp
C:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\tools\clang\include\clang/AST/DeclObjC.h(613) : error C2620: 'clang::ObjCTypeParamList::Brackets' : illegal union member; type 'clang::SourceRange' has a user-defined constructor or non-trivial default constructor
C:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\tools\clang\include\clang/AST/DeclObjC.h(664) : error C2065: 'Brackets' : undeclared identifier
C:\buildbot\slave-config\clang-x86-win2008-selfhost\llvm\tools\clang\include\clang/AST/DeclObjC.h(664) : error C2228: left of '.getBegin' must have class/struct/union
        type is 'unknown-type</span></pre></div><div dir="ltr"><br></div><div dir="ltr">Yaron</div><div dir="ltr"><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div dir="ltr">2015-07-07 9:20 GMT+03:00 Douglas Gregor <span dir="ltr"><<a href="mailto:dgregor@apple.com" target="_blank">dgregor@apple.com</a>></span>:</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: dgregor<br>
Date: Tue Jul  7 01:20:46 2015<br>
New Revision: 241564<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D241564-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=KE0P0tLiuQbS64-AkJMU6cX7N6HPyFQatQUeEWffeR8&s=ND9HbjQFWuljyW89YzMknloRkPAtlYKN8OImEj_Pxjg&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=241564&view=rev</a><br>
Log:<br>
Don't rely on the use of non-POD types within unions.<br>
<br>
They aren't universally supported and we're not getting any benefit<br>
from using them.<br>
<br>
Modified:<br>
    cfe/trunk/include/clang/AST/DeclObjC.h<br>
    cfe/trunk/lib/AST/DeclObjC.cpp<br>
<br>
Modified: cfe/trunk/include/clang/AST/DeclObjC.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_AST_DeclObjC.h-3Frev-3D241564-26r1-3D241563-26r2-3D241564-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=KE0P0tLiuQbS64-AkJMU6cX7N6HPyFQatQUeEWffeR8&s=GIMOJPz7Ftt6In64w4boD8HlbfULlrdjBGHzfuPIKro&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=241564&r1=241563&r2=241564&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/AST/DeclObjC.h (original)<br>
+++ cfe/trunk/include/clang/AST/DeclObjC.h Tue Jul  7 01:20:46 2015<br>
@@ -610,7 +610,10 @@ public:<br>
 class ObjCTypeParamList {<br>
   union {<br>
     /// Location of the left and right angle brackets.<br>
-    SourceRange Brackets;<br>
+    struct {<br>
+      unsigned Begin;<br>
+      unsigned End;<br>
+    } Brackets;<br>
<br>
     // Used only for alignment.<br>
     ObjCTypeParamDecl *AlignmentHack;<br>
@@ -661,9 +664,15 @@ public:<br>
     return *(end() - 1);<br>
   }<br>
<br>
-  SourceLocation getLAngleLoc() const { return Brackets.getBegin(); }<br>
-  SourceLocation getRAngleLoc() const { return Brackets.getEnd(); }<br>
-  SourceRange getSourceRange() const { return Brackets; }<br>
+  SourceLocation getLAngleLoc() const {<br>
+    return SourceLocation::getFromRawEncoding(Brackets.Begin);<br>
+  }<br>
+  SourceLocation getRAngleLoc() const {<br>
+    return SourceLocation::getFromRawEncoding(Brackets.End);<br>
+  }<br>
+  SourceRange getSourceRange() const {<br>
+    return SourceRange(getLAngleLoc(), getRAngleLoc());<br>
+  }<br>
<br>
   /// Gather the default set of type arguments to be substituted for<br>
   /// these type parameters when dealing with an unspecialized type.<br>
<br>
Modified: cfe/trunk/lib/AST/DeclObjC.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_AST_DeclObjC.cpp-3Frev-3D241564-26r1-3D241563-26r2-3D241564-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=KE0P0tLiuQbS64-AkJMU6cX7N6HPyFQatQUeEWffeR8&s=5F_aXW8jcNOLeU245VLK0lqHcPAVuujg34k7ROCBZls&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclObjC.cpp?rev=241564&r1=241563&r2=241564&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/AST/DeclObjC.cpp (original)<br>
+++ cfe/trunk/lib/AST/DeclObjC.cpp Tue Jul  7 01:20:46 2015<br>
@@ -1251,8 +1251,10 @@ SourceRange ObjCTypeParamDecl::getSource<br>
 ObjCTypeParamList::ObjCTypeParamList(SourceLocation lAngleLoc,<br>
                                      ArrayRef<ObjCTypeParamDecl *> typeParams,<br>
                                      SourceLocation rAngleLoc)<br>
-  : Brackets(lAngleLoc, rAngleLoc), NumParams(typeParams.size())<br>
+  : NumParams(typeParams.size())<br>
 {<br>
+  Brackets.Begin = lAngleLoc.getRawEncoding();<br>
+  Brackets.End = rAngleLoc.getRawEncoding();<br>
   std::copy(typeParams.begin(), typeParams.end(), begin());<br>
 }<br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>