This is the mail archive of the gcc-bugs@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]

[Bug tree-optimization/46367] [4.6 Regression] ICE during cgraph edge cloning


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46367

--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-15 15:28:44 UTC ---
The loop

#88 0x0000000000f9218f in cgraph_clone_inlined_nodes (e=0x7ffff315c750, 
    duplicate=1 '\001', update_original=0 '\000')
    at /space/rguenther/src/svn/trunk/gcc/ipa-inline.c:306
306           cgraph_clone_inlined_nodes (e, duplicate, update_original);
(gdb) l
301       cgraph_propagate_frequency (e->callee);
302
303       /* Recursively clone all bodies.  */
304       for (e = e->callee->callees; e; e = e->next_callee)
305         if (!e->inline_failed)
306           cgraph_clone_inlined_nodes (e, duplicate, update_original);


doesn't terminate but endlessly recurses.  I can't see how it should work
in a cgraph cycle:

Considering inline candidate S::~S().

Considering S::~S() with 10 size
 to be inlined into S::~S() in t.ii:7
 Estimated growth after inlined into all callees is +4 insns.
 Estimated badness is 13, frequency 0.78.
    Badness calculcation for S::~S() -> S::~S()
      growth 4, time 22-14, size 10-6
      12: guessed profile. frequency 783, overall growth 4, benefit 61%,
divisor 4819
  Performing recursive inlining on S::~S()
   Inlining call of depth 1
Processing frequency S::~S()
  Called by S::~S() that is normal or hot
   Inlining call of depth 2
Processing frequency S::~S()
  Called by S::~S() that is normal or hot
Processing frequency S::~S()
  Called by S::~S() that is normal or hot
Processing frequency S::~S()
  Called by S::~S() that is normal or hot
Processing frequency S::~S()
  Called by S::~S() that is normal or hot
Processing frequency S::~S()
  Called by S::~S() that is normal or hot
Processing frequency S::~S()
  Called by S::~S() that is normal or hot
Processing frequency S::~S()
Node S::~S() promoted to unlikely executed.
Processing frequency S::~S()
Processing frequency S::~S()
Processing frequency S::~S()
Processing frequency S::~S()
Processing frequency S::~S()
Processing frequency S::~S()
Processing frequency S::~S()
...


Honza, please have a look.


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