vtjnash wrote: That doesn't have to be an either/or question. Both approaches can be made to work side-by-side, particularly while getting real-world testing of the impact. This approach seemed to already be used by many other intrinsics (e.g. lifetime, var_annotation, assume, invariant), while the metadata approach seemed less common and less reliable (it actually is pre-existing, but isn't fully implemented currently). I was a bit concerned with the implications of needing to add–and teach various passes the need to preserve–another metadata field on every alloca (passes perhaps should often use combineMetadataForCSE instead of dropUnknownNonDebugMetadata, but that is tricky). I am hoping that any regressions can be fixed generically by ensuring passes are checking for memory access semantics (allowing argument replacement with `freeze(poison)` if removed and no effect on AA).
But as @phyBrackets noted, even just dropping default-safe metadata reduces the quality of the SSP security by reducing the quality of the layout: https://github.com/llvm/llvm-project/pull/183623#discussion_r2863115869 https://github.com/llvm/llvm-project/pull/183623 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
