jfb added a comment. In D79279#2201484 <https://reviews.llvm.org/D79279#2201484>, @rsmith wrote:
> I think it would be reasonable in general to guarantee that our `__builtin_` > functions have contracts at least as wide as the underlying C function, but > allow them to have extensions, and to keep the plain C functions unextended. > I had actually thought we already did that in more cases than we do (but > perhaps I was thinking about the LLVM math intrinsics that guarantee to not > set `errno`). That would mean that a C standard library implementation is > still free to `#define foo(x,y,z) __builtin_foo(x,y,z)`, but if they do, they > may pick up extensions. Alright, how about I go with what you say here, and instead of adding `__builtin_*_overloaded` versions I just overload the `__builtin_*` variants? This includes having an optional 4th parameter for access size. Alternatively, I could overload `__builtin_*`, but have a separate set of functions (say `__builtin_*_sized`) for the atomic access size variants. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79279/new/ https://reviews.llvm.org/D79279 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits