------- Comment #1 from pinskia at gcc dot gnu dot org  2008-08-24 22:40 -------
Confirmed.  One issue is that VRP does not look again at some % statements when
it knows it can be a constant so we produce:
  D.1962_10 = 0;
  D.1963_11 = (int) D.1962_10;

Here is a more reduced testcase:
func_18 ( int t )
{
  unsigned l_889;
  int l_895 = 1;
  for (0; 1; ++l_889)
    {
      int t1 = 0;
      if (func_81 (1))
        {
          int rhs = l_895;
          if (rhs == 0)
            rhs = 1;
          if (1 & (t % rhs))
            t1 = 1;
        }
      func_98 (t1);
      l_895 = 0;
    }
}


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
          Component|c                           |tree-optimization
     Ever Confirmed|0                           |1
  GCC build triplet|i686-pc-linux-gnu           |
   GCC host triplet|i686-pc-linux-gnu           |
 GCC target triplet|i686-pc-linux-gnu           |i686-*-*, x86_64-*-*
           Keywords|                            |ice-on-valid-code
   Last reconfirmed|0000-00-00 00:00:00         |2008-08-24 22:40:19
               date|                            |
            Summary|ice at tree-ssa-            |[4.4 Regression] ice at
                   |ifcombine.c:222             |tree-ssa-ifcombine.c:222 for
                   |                            |-Os
   Target Milestone|---                         |4.4.0


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

Reply via email to