<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Something that would be good to get clarity on:<div class=""><br class=""></div><div class="">The RISC-V backend recently had a bugfix patch that got backported to the 10.0.1 branch. The original patch introduced a new virtual method in TargetLowering.h, and the backported patch [1] was rewritten to avoid changing the ABI of libLLVM.so.</div><div class=""><br class=""></div><div class="">This feels like some kind of policy decision about the C++ ABI beyond "it's entirely unstable" - though I understand we may not want to commit to doing this for every backported bug fix. </div><div class=""><br class=""></div><div class="">It would be good to understand where this line is, if we're going to clarify the documentation.</div><div class=""><br class=""></div><div class="">Sam</div><div class=""><br class=""></div><div class="">[1]: <a href="https://github.com/llvm/llvm-project/commit/f8e49af4f1adcf457ea32e7164a126b10357cf4f" class="">https://github.com/llvm/llvm-project/commit/f8e49af4f1adcf457ea32e7164a126b10357cf4f</a><br class=""><div class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 23 Jul 2020, at 4:52 am, Chris Lattner via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html; charset=us-ascii" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">This sounds reasonable to me, I am generally +1 on documenting things that are well known but not written down.<div class=""><br class=""></div><div class="">Thanks Varun!</div><div class=""><br class=""></div><div class="">-Chris<br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Jul 21, 2020, at 5:16 PM, Varun Gandhi via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html; charset=us-ascii" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">The Developer Policy document (<a href="https://llvm.org/docs/DeveloperPolicy.html" class="">https://llvm.org/docs/DeveloperPolicy.html</a>) contains a Section "C API Changes". There is no corresponding section for C++ API Changes. LLVM is somewhat different from most libraries in that the main language is C++ but the C++ API is not guaranteed to be stable in any shape or form from what I understand.<div class=""><br class=""></div><div class="">I think it would be useful to have a "C++ API Changes" section to Developer Policy spelling this out. Copying the style of the C API Changes section, it could look something like:</div><div class=""><br class=""></div><div class="">---</div><div class="">C++ API Changes<br class=""><br class="">* <span style="caret-color: rgb(0, 0, 0);" class="">Stability Guarantees: The C++ API is does not guarantee any sta</span><span style="caret-color: rgb(0, 0, 0);" class="">bility. Changes may be made without any notice about deprecation and alternate APIs for the same functionality may not be included. Downstream projects using the C++ API are expected to keep up with changes.</span></div><div class=""><font class=""><span style="caret-color: rgb(0, 0, 0);" class="">* Release stability: The C++ API does not make any stability guarantees for the release branch.</span></font></div><div class=""><font class=""><span style="caret-color: rgb(0, 0, 0);" class="">* Testing: </span></font><span style="caret-color: rgb(0, 0, 0);" class="">Patches to the C++ API are expected to come with tests just</span><span style="caret-color: rgb(0, 0, 0);" class=""> </span><span style="caret-color: rgb(0, 0, 0);" class="">like any other patch.</span></div><div class=""><font class=""><span style="caret-color: rgb(0, 0, 0);" class="">* </span></font><span style="caret-color: rgb(0, 0, 0);" class="">Including new things into the API: [TODO: I'm not sure what should go here]</span><span style="caret-color: rgb(0, 0, 0);" class="">.</span></div><div class=""><font class=""><span style="caret-color: rgb(0, 0, 0);" class="">* </span></font>Documentation: Changes to the C++ API are not expected to be documented in the release notes.</div><div class="">---</div><div class=""><br class=""></div><div class="">Clang does have a page with information about its own C++ API (<a href="https://clang.llvm.org/docs/Tooling.html" class="">https://clang.llvm.org/docs/Tooling.html</a>) which is more informative, but I think it would useful to have this information on the Developer Policy page for the whole of LLVM.</div><div class=""><br class=""></div><div class="">Does this addition sound reasonable?</div><div class=""><br class=""></div><div class="">Varun</div></div>_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class=""><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br class=""></div></blockquote></div><br class=""></div></div>_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev<br class=""></div></blockquote></div><br class=""><div class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div>--</div><div>Sam Elliott</div><div>Software Team Lead</div><div>Senior Software Developer - LLVM and OpenTitan</div><div>lowRISC CIC</div></div></div></div></div></div></div></div></div></div></div></div>
</div>
<br class=""></div></div></body></html>