<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 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:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
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="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi Argyrios, Richard,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I raised <a href="https://llvm.org/PR37399">PR37399</a> and have been discussing how to fix it with Reid.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The root of the problem is an interaction between the MSCXXABI code and the fact that an injected-class-name is inserted into the decl list for class template specializations after the MSCXXABI code has added an attribute to the decl for
the class template specialization (in a case involving a dependent base of the class template where the MSCXXABI code is invoked before the injected-class-name is instantiated).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The two options for fixing this problem either involve working around the fact that the injected-class-name is inserted into the decl list for the class template specialization by copying the MSCXXABI attribute to the injected-class-name
decl when it’s added to the list (this works but feels ugly), or not inserting the injected-class-name into the decl list for the class template specialization (this causes a number of other tests to fail, possibly because ClassTemplateSpecializationDecl::getMostRecentDecl()
explicitly works around the fact that there will be injected-class-names in the decl list for class template specializations, though as yet unconfirmed).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I have noticed that you have both put comments on ClassTemplateSpecializationDecl::getMostRecentDecl() which seem to suggest the fact that the injected-class-name is inserted into the decl list for the class template specialization seems
to be an error in and of itself. Does it make more sense to try and clean up the fact that injected-class-names are inserted into the decl list, resulting in a broader change, or just try and point-fix the MSCXXABI issue?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m a clang newbie, so would appreciate any feedback you could give – TIA! Further details are in
<a href="https://llvm.org/PR37399">PR37399</a>.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:black;mso-fareast-language:EN-GB">Yours, Andrew R<o:p></o:p></span></p>
</div>
</body>
</html>