<div dir="ltr"><div>I think some of the other recent TypePrinter changes might also risk changing the @encode output. Generally it seems unwise for @encode to be using the type pretty-printer if it wants to be ABI-stable; I don't think it's reasonable to expect any guarantees as to the stability of pretty-printed type names. I think USR generation suffers from similar problems; it too uses the type pretty-printer to generate supposedly-ABI-stable keys in at least some cases.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 12 Nov 2020 at 13:44, Duncan P. N. Exon Smith via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;">Hi Nico,<div><br></div><div>Thanks for reaching out. Michael Spencer is probably the best contact for this kind of question these days; I’ve cc’ed him.<br><div><br></div><div>Duncan</div><div><br><blockquote type="cite"><div>On 2020-11-12, at 09:04, Nico Weber <<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>> wrote:</div><br><div><div dir="ltr">Hi,<div><br></div><div><a href="http://reviews.llvm.org/D76801" target="_blank">http://reviews.llvm.org/D76801</a> changed clang/lib/AST/TypePrinter.cpp to not print a space between consecutive '>'s in templates if targeting C++11 or later.<br></div><div><br></div><div>I noticed recently that this affects Objective-C's @encode too, which means it has different results based on language standard, making it impossible to build part of a program with C++98 and another part with C++11 (...if both parts need @encode if some common type to agree). It also means @encode for types changed with that patch, which is an ABI break of sorts.</div><div><br></div><div>However, the change landed in March, so maybe it's already deployed in new Xcodes.</div><div><br></div><div>Should we make @encode opt out of this pretty printing change to restore the old behavior? (Several other places also broke due to that change and were changed to opt out -- debug info, for example).</div><div><br></div><div>I found this while writing tests for an unrelated change [1] and I don't know of any projects adversely affected by this.</div><div><br></div><div>Nico</div><div><br></div><div><br></div><div>1: See "FIXME" in <a href="https://reviews.llvm.org/D90622#change-Aht3gYP3AIRe" target="_blank">https://reviews.llvm.org/D90622#change-Aht3gYP3AIRe</a></div></div>
</div></blockquote></div><br></div></div>_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div>