Hi,
this patch permits inlining across flag_strict_aliasing this is hopefully
safe because te memory accesses in -fstrict-aliasing should have alias
set 0.
This should alllow to build packages that currently fail on always_inline
because of use of explicit optimization attributes and hopefully also solve the
performance issues with Firefox and LTO+FDO build that crept in shortly before
release.
Bootstrapped/regtested x86_64-linux, will commit it to mainline and to branch
later next week if no problems shows up.
Honza
PR ipa/65873
* ipa-inline.c (can_inline_edge_p): It is safe to inline across
-fstrict-aliasing boundaries.
Index: ipa-inline.c
===================================================================
--- ipa-inline.c (revision 222620)
+++ ipa-inline.c (working copy)
@@ -439,9 +439,6 @@ can_inline_edge_p (struct cgraph_edge *e
== !opt_for_fn (callee->decl, optimize) || !always_inline))
|| check_match (flag_wrapv)
|| check_match (flag_trapv)
- /* Strictly speaking only when the callee contains memory
- accesses that are not using alias-set zero anyway. */
- || check_maybe_down (flag_strict_aliasing)
/* Strictly speaking only when the callee uses FP math. */
|| check_maybe_up (flag_rounding_math)
|| check_maybe_up (flag_trapping_math)