On 05/12/2015 04:12 PM, Jan Hubicka wrote:

Hi,
this patch works around PR where we refuse to inline always_inline memcpy
into function with explicit Ofast optimization attribute.  This is because
we think we can not promote -fno-fast-math code to -fast-math code.
This is of course safe for memcpy because it contains to fast-math code,
but we don't really do the analysis for each of the flags we check.

Earlier compilers was happily producing wrong code here and it seems practical
to do that on GCC 5 to deal with common falout.  I will implement the more
fine grained check incrementally.

Bootstrapped/regtested x86_64-linux. Will commit it to mainline shortly and
to release branch later this week.

        PR ipa/65873
        * ipa-inline.c (can_inline_edge_p): Allow early inlining of always
        inlines across optimization boundary.
        * testsuite/gcc.c-torture/compile/pr65873.c: New testcase.
Index: ipa-inline.c
===================================================================
--- ipa-inline.c        (revision 223093)
+++ ipa-inline.c        (working copy)
@@ -427,46 +427,55 @@ can_inline_edge_p (struct cgraph_edge *e
              && lookup_attribute ("always_inline",
                                   DECL_ATTRIBUTES (callee->decl)));


I'm having problems parsing the following comment block:

+     /* Until GCC 4.9 we did not check the semantics alterning flags

"alterning"?

+       bellow and inline across optimization boundry.

s/bellow/below/g
s/boundry/boundary/

+       Enabling checks bellow breaks several packages by refusing
+       to inline library always_inline functions. See PR65873.
+       Disable the check for early inlining for now until better solution
+       is found.  */
+     if (always_inline && early)
+       ;

-Sandra

Reply via email to