[Bug middle-end/55498] [devirt] trunk fails inline-devirt test #6

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Dec 13 11:41:00 GMT 2012


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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-12-13
     Ever Confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> 2012-12-13 11:41:28 UTC ---
Confirmed.  It needs -O3 (or -fipa-cp-clone) to actually get to the point to
devirtualize all indirect calls (thus inline print and one/twoStrategy).

Jump functions:
  Jump functions of caller  printf:
  Jump functions of caller  main:
    callsite  main/8 -> print/7 :
       param 0: CONST: twoStrategy
    callsite  main/8 -> print/7 :
       param 0: CONST: oneStrategy

good!

 Propagating constants:

Not considering main for cloning; no hot calls.
Not considering twoStrategy for cloning; no hot calls.
Not considering two for cloning; no hot calls.
Not considering oneStrategy for cloning; no hot calls.
Not considering one for cloning; no hot calls.

so it cloned print(), good!

print.constprop.1/11 (print.constprop.1) @0x7f2c26dfa940
  Type: function
  Visibility:
  References: twoStrategy/6 (addr)
  Referring:
  Clone of print/7
  Availability: local
  Function flags: analyzed local finalized
  Called by: main/8 (3.00 per call)
  Calls: twoStrategy/6 (1.00 per call) twoStrategy/6 (1.00 per call) printf/9
(1.00 per call) printf/9 (1.00 per call)
  Has 2 outgoing edges for indirect calls.


But the issue is that there are no return functions and thus we cannot
discover the direct call for

  fn = indirect ();
  fn ();

at IPA time even when indirect () returns just a constant.

We need iteration for this at the moment.  Or better, IPA-CP needs
return functions implemented.



More information about the Gcc-bugs mailing list