[Bug tree-optimization/18241] [4.0 Regression] linux kernel loop gets miscompiled

pinskia at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Mon Nov 1 02:34:00 GMT 2004


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-11-01 02:34 -------
Also for the first loop, we look we do much worse code with -fivopts at least on powerpc64:
With -fno-ivopts:
  offset = (int) (unsigned int) (index >> (int) shift) & 63;
  pathp = pathp.109 + 24B;
  pathp->offset = offset;
  temp.107 = *pathp.109->slot;
  pathp->node = temp.107;
  D.7848 = (struct radix_tree_node * *) &temp.107->slots + (void * *) ((long unsigned int) offset * 8);
  pathp->slot = D.7848;
  shift = shift - 6;
  height = height - 1;

without:
  offset = (int) (unsigned int) (index >> (int) (shift + (unsigned int) ivtmp.126 * 4294967290)) & 63;
             <--- here why not keep the shift decrementing
  pathp.155 = ivtmp.137 + &path + 24B;
  D.8017 = &path + 24B;
  *((int *) ivtmp.137 + &D.8017->offset) = offset;
  D.8020 = (struct radix_tree_node * * *) ivtmp.137;
  temp.162 = **(D.8020 + &path[0].slot);
  *((struct radix_tree_node * *) ivtmp.137 + &D.8017->node) = temp.162;
  D.7848 = (struct radix_tree_node * *) &temp.162->slots + (void * *) ((long unsigned int) offset * 8);
  *(D.8020 + &D.8017->slot) = D.7848;
  height = height + 4294967295;

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pinskia at gcc dot gnu dot
                   |                            |org


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



More information about the Gcc-bugs mailing list