------- Comment #3 from jakub at gcc dot gnu dot org  2010-06-25 11:26 -------
This goes wrong with -O2 -funroll-loops already during tree opts.  In vrp2 we
have:
  b[2][1]{lb: 1 sz: 1} = D.1599_148;
  b[3][1]{lb: 1 sz: 1} = D.1599_154;
  D.1635_152 = 2;
  D.1636_151 = &b[2][1]{lb: 1 sz: 1};
  D.1637_146 = 3;
  D.1638_145 = &b[3][1]{lb: 1 sz: 1};
  __builtin_memcpy (D.1638_145, D.1636_151, 1);
...
  D.1647_84 = b[3][1]{lb: 1 sz: 1};
  D.1648_85 = A.5[3];
  D.1649_86 = (*D.1648_85)[1]{lb: 1 sz: 1};
  if (D.1647_84 != D.1649_86)

but in dom2:
  b[2][1]{lb: 1 sz: 1} = D.1599_148;
  b[3][1]{lb: 1 sz: 1} = D.1599_154;
  D.1635_152 = 2;
  D.1636_151 = &b[2][1]{lb: 1 sz: 1};
  D.1637_146 = 3;
  D.1638_145 = &b[3][1]{lb: 1 sz: 1};
  D.1680_170 = b[2][1]{lb: 1 sz: 1};
  b[3][1]{lb: 1 sz: 1} = D.1680_170;
...
  D.1647_84 = D.1599_154;
  D.1648_85 = A.5[3];
  D.1649_86 = (*D.1648_85)[1]{lb: 1 sz: 1};
  if (D.1649_86 != D.1599_154)

b[3] at that point isn't D.1599_154 though, but D.1599_148 (== D.1680_170).


-- 


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

Reply via email to