This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Clean up early inliner


On Wed, 7 Apr 2010, Jan Hubicka wrote:

> Well, if you make the patch to pass testing, consider it preaproved.  We can handle
> all this stuff incrementally.

I looked into the issues and

FAIL: gcc.dg/always_inline3.c  (test for warnings, line 5)
FAIL: gcc.dg/always_inline3.c (test for excess errors)

is because we rebuild the cgraph all the time and so lose non-inline
reasons set by early inlining (we expect "recursive inlining" but
get "not considered for inlining").

Also I get

FAIL: gcc.dg/tree-ssa/inline-2.c (test for excess errors)

It seems we do not consider always_inline functions at all from
the greedy inliner?  Why?  Thus, the following fixes all fails
for me:

Index: gcc/ipa-inline.c
===================================================================
--- gcc/ipa-inline.c.orig       2010-04-09 16:23:54.000000000 +0200
+++ gcc/ipa-inline.c    2010-04-09 16:23:06.000000000 +0200
@@ -913,8 +913,7 @@ cgraph_decide_inlining_of_small_function
 
   for (node = cgraph_nodes; node; node = node->next)
     {
-      if (!node->local.inlinable || !node->callers
-         || node->local.disregard_inline_limits)
+      if (!node->local.inlinable || !node->callers)
        continue;
       if (dump_file)
        fprintf (dump_file, "Considering inline candidate %s.\n", 
cgraph_node_name (node));

re-testing with that.

Comments?

Thanks,
Richard.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]