------- Additional Comments From pinskia at gcc dot gnu dot org  2005-01-21 
07:57 -------
I think one of the problems is that ivopts causes out of ssa not to Coalesce 
two SSA_NAME:
Before out of ssa:
  D.1127_16 = *ivtmp.8_9;
  D.1128_21 = *ivtmp.12_30;
  D.1129_22 = D.1127_16 - D.1128_21;
  *ivtmp.12_30 = D.1129_22;
  ivtmp.3_17 = ivtmp.3_18 + 1;

  # ivtmp.12_30 = PHI <ivtmp.12_35(0), ivtmp.12_31(1)>;
  # ivtmp.8_9 = PHI <ivtmp.8_29(0), ivtmp.8_7(1)>;
  # ivtmp.3_18 = PHI <0(0), ivtmp.3_17(1)>;
<L1>:;
  ivtmp.8_7 = ivtmp.8_9 + 4B;
  ivtmp.12_31 = ivtmp.12_30 + 4B;
  D.1171_37 = ivtmp.3_18 + D.1163_6;
  i_38 = (int) D.1171_37;
  if (i_38 <= maxLen_4) goto <L0>; else goto <L2>;


After:
<L0>:;
  *ivtmp.12 = *ivtmp.17 - *ivtmp.12;
  ivtmp.3 = ivtmp.3 + 1;
  ivtmp.17 = ivtmp.8;
  ivtmp.12 = ivtmp.16;

<L1>:;
  ivtmp.8 = ivtmp.17 + 4B;
  ivtmp.16 = ivtmp.12 + 4B;
  if ((int) (ivtmp.3 + D.1163) <= maxLen) goto <L0>; else goto <L2>;

Note how there are two moves in the BB for L0.
Coalesce list: (6)ivtmp.12_30 & (7)ivtmp.12_31 [map: 6, 7] : Fail due to 
conflict
Coalesce list: (1)ivtmp.8_7 & (2)ivtmp.8_9 [map: 1, 2] : Fail due to conflict


-- 


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

Reply via email to