My-Bad-2 wrote: > Thank you for your patch! Please see #82776 and ensure concerns in that PR > are addressed in this PR.
Thanks for pointing me to the previous PR. It appears I'm a bit late to this lol. Anyways, After reading through the patch, it appears that the author wanted to implement `__builtin_start_lifetime` as a language extension. While my current PR strictly conforms to C++23 ISO guidelines. There were concerns about TBAA. The previous implementation used the `__builtin_launder` path for CodeGen for both builtins. I don't think that this patch has to worry about TBAA as `Sema` validates that the element type (or base type) is implicit-lifetime and implicit-lifetime objects don't have to worry about vptr or vtables. Though, I'm not sure if `__builtin_start_lifetime_as` should be extended to support non-implicit types. It'll be appreciated if someone provides a second-opinion on this matter. Perhaps, it can be implemented as a flag in the builtin itself such that `std::start_lifetime_as` doesn't introduce instantiation overhead. Clang could handle code generation (and address TBAA concerns) internally. I'm thinking of something like: ```cpp __builtin_start_lifetime_as((T*)ptr, Strict=True/False); ``` Another concern raised in the previous patch was about supporting the array version of start_lifetime. This patch does address this concern as `Sema` strips away array dimensions before checking the Base element type. #82776 requires libc++ to type-check, library maintainers might have to write recursive template traits to strip away array dimensions. https://github.com/llvm/llvm-project/pull/196286 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
