erichkeane added a comment. In https://reviews.llvm.org/D23692#520097, @erichkeane wrote:
> In https://reviews.llvm.org/D23692#520081, @rsmith wrote: > > > This is not a conforming extension. We are explicitly not allowed to make > > standard library functions `constexpr` if the standard doesn't say they > > are; see [constexpr.functions] (17.6.5.6) in the C++ standard. Clang > > previously used to allow constant-folding `strlen` calls, but we removed > > that support intentionally for this reason. > > > > It would seem reasonable for this constant-folding to be enabled for > > `strlen` if the callee was explicitly marked as `constexpr` in the source > > code. That way, if the standard library chooses to mark it as `constexpr` > > as a (currently) non-conforming extension, we would provide an optimized > > implementation. > > > Ok, thank you for your prompt response. I'll see if that is a viable > solution for this case. > > Thanks! Sadly, it doesn't seem that this would be a viable fix. libstdc++ doesn't actually seem to implement strlen, and all references to it are "extern size_t strlen", with no constexpr. I suspect they are doing what I did here, just treating it as constexpr as a special function. As mentioned, I didn't even see an implementation at all, so I think they're counting on the compiler replacing it with the built-in immediately anyway. Repository: rL LLVM https://reviews.llvm.org/D23692 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits