------- Comment #3 from pinskia at gcc dot gnu dot org  2008-08-31 01:57 -------
Here is a short reduced testcase:
void f(int);
inline void  _M_reset (int *a) throw()
{
  f (*a);
}
bool _M_finished();
int _M_curr_index;
void _M_allocate_single_object()
{
  if (__builtin_expect (_M_finished(), false))
  {
    _M_reset(&_M_curr_index);
    _M_reset(&_M_curr_index);
  }
}
So what is happening is that we are not inlining as the we find the basic block
containing the two _M_reset is cold (via the __builtin_expect) so we decide to
do IPA-CP instead as we have two calls to that function with the same argument.
  We create an IPA-cp clone of the function of _M_reset, mark it as a local
function but don't clear DECL_WEAK.  I will see what we can do for this decl
soon.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-08-31 01:57:09
               date|                            |


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

Reply via email to