------- Comment #10 from rguenth at gcc dot gnu dot org 2008-08-17 11:18 ------- And I have a patch to fix regular insertion. Which means PRE now produces
foo (int i, int j, int k, int b) { int prephitmp.12; int pretmp.11; struct Loc IND; int D.1922; int D.1921; int D.1920; int D.1919; int D.1918; int D.1916; <bb 2>: if (b_1(D) != 0) goto <bb 3>; else goto <bb 4>; <bb 3>: IND.x[0] = i_2(D); IND.x[1] = j_3(D); D.1916_5 = k_4(D) + -1; IND.x[2] = D.1916_5; goto <bb 5>; <bb 4>: IND.x[0] = i_2(D); IND.x[1] = j_3(D); IND.x[2] = k_4(D); <bb 5>: # prephitmp.12_20 = PHI <D.1916_5(3), k_4(D)(4)> D.1919_6 = i_2(D); D.1920_7 = j_3(D); D.1922_9 = prephitmp.12_20; D.1921_8 = D.1920_7 + D.1919_6; D.1918_10 = D.1921_8 + D.1922_9; return D.1918_10; } for the original testcase. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35972