<div dir="ltr"><div dir="ltr">On Thu, Mar 4, 2021 at 3:25 PM David Rector via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:</div><div class="gmail_quote"><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;"><div><blockquote type="cite"><div>On Mar 4, 2021, at 2:26 PM, Balázs Benics <<a href="mailto:benicsbalazs@gmail.com" target="_blank">benicsbalazs@gmail.com</a>> wrote:</div><br><div><div dir="ltr"><div>I don't think you can easily substitute constexpr evaluation with simply calling a compiled counterpart. [...]</div></div></div></blockquote><div><br></div><div>Thanks for this input, you’re right — e.g. `constexpr void f(A *a)` might or might not be able to handle `f(nullptr)`; it would require proof, and there things probably get too complex.  </div></div></div></blockquote><div><br></div><div>The other thing you have to keep in mind is cross-compilers. JIT interpreters do not have to deal with cross-compilation.</div><div>Clang could certainly invest in JIT-compiled codepaths for its constexpr evaluation, and that might make the <i>usual</i> desktop-compilation path blazing fast... but then you'd be in this weird situation where Boost-or-whatever compiled in a reasonable amount of time for x86-64, but building an ARM binary would take days. (Until you bought an M1 Mac, I guess, and then the situation would flip-flop.)</div><div><br></div><div>my $.02,</div><div>Arthur</div></div></div>