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

Reply via email to