------- Additional Comments From pinskia at gcc dot gnu dot org  2004-10-16 14:11 
-------
We look much better now but still little problems:
bool f(const std::vector<bool, std::allocator<bool> >&, size_t) (v, x)
{
  ptrdiff_t __n.82;
  unsigned int SR.77;
  _Bit_type * __x;
  ptrdiff_t __n;
  struct _Bit_iterator & __x;

<bb 0>:
  __x = &v->D.10279._M_impl._M_start; //<--this could be pushed into the next two 
instructions
  __n = (ptrdiff_t) (__x->D.8752._M_offset + (unsigned int) (ptrdiff_t) x);
  __x = __x->D.8752._M_p + (_Bit_type *) ((unsigned int) (__n / 32) * 4);
  __n.82 = __n % 32;
  if (__n.82 < 0) goto <L1>; else goto <L2>; //<-- could be done based on __n instead 
of __n.82

<L1>:;
  SR.77 = (unsigned int) (__n.82 + 32);
  __x = __x - 4B;
  goto <bb 3> (<L3>);

<L2>:;
  SR.77 = (unsigned int) __n.82;

<L3>:;
  return (int) (bool) (int) (bool) (int) (bool) ((1 << (int) SR.77 & *__x) != 0);

}

-- 


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

Reply via email to