Patchwork Fix minor bug in accounting external functions

login
register
mail settings
Submitter Jan Hubicka
Date Oct. 26, 2012, 4:53 p.m.
Message ID <20121026165315.GB25006@kam.mff.cuni.cz>
Download mbox | patch
Permalink /patch/194535/
State New
Headers show

Comments

Jan Hubicka - Oct. 26, 2012, 4:53 p.m.
Hi,
inliner knows that removing external function is not going to save any code,
but it should also know that inlining into external function that is itself
not inline (yet) does not cost you anything either.

Bootstrapped/regtested x86_64-linux, comitted.

Honza

Patch

Index: ipa-inline-transform.c
===================================================================
--- ipa-inline-transform.c	(revision 192821)
+++ ipa-inline-transform.c	(working copy)
@@ -269,7 +269,10 @@  inline_call (struct cgraph_edge *e, bool
 	      || predicated);
 #endif
    
-  if (overall_size)
+  /* Account the change of overall unit size; external functions will be
+     removed and are thus not accounted.  */
+  if (overall_size
+      && !DECL_EXTERNAL (to->symbol.decl))
     *overall_size += new_size - old_size;
   ncalls_inlined++;