[Bug sanitizer/89124] __attribute__((no_sanitize_address)) interferes with __attribute__((target(xxx)))
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jan 30 20:52:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89124
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
We have (for a few years already) refused to inline if the callee and caller
disagree on the requested (-fsanitize=address related) sanitization flags:
static bool
sanitize_attrs_match_for_inline_p (const_tree caller, const_tree callee)
{
if (!caller || !callee)
return true;
return ((sanitize_flags_p (SANITIZE_ADDRESS, caller)
== sanitize_flags_p (SANITIZE_ADDRESS, callee))
&& (sanitize_flags_p (SANITIZE_POINTER_COMPARE, caller)
== sanitize_flags_p (SANITIZE_POINTER_COMPARE, callee))
&& (sanitize_flags_p (SANITIZE_POINTER_SUBTRACT, caller)
== sanitize_flags_p (SANITIZE_POINTER_SUBTRACT, callee)));
}
I guess we could make an exception and allow inlining always_inline functions
that do have these enabled into a function that disables that.
More information about the Gcc-bugs
mailing list