eugenis added a comment. In http://reviews.llvm.org/D16738#340175, @EricWF wrote:
> > This also could be fixed in a different way by replacing C-style > > > casts with reinterpret_cast<>, which, from my reading of the > > > standard, is allowed in this context. > > > I agree that using `void*` to represent raw memory is the better approach > than `reinterpret_cast<>()`. > However I'm concerned that changing the signature (and mangling) of `virtual > void __clone(...)` could cause ABI problems. > I *think* this should be "safe" because the VTable's mangled name doesn't > change. but if I'm wrong we must use `reinterpret_cast<>` for calls to > `__clone(...)`. > > The parts of the patch that don't affect `__clone(...)` LGTM. You can commit > them separably if you want. > > > That would not help with CFI > > > though, which still flags such casts as invalid (yes, it is stricter that > > the standard). > > > I'm sure there are alternative ways to make CFI shut up. Perhaps we could do > the `Buffer* -> Base*` conversion inside a blacklisted function (akin to > std::launder)? > It would also be nice to have "`__attribute__((__no_sanitize__("cfi")))`. We do have this attribute. Repository: rL LLVM http://reviews.llvm.org/D16738 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits