Processed: tag gcc report as sarge only
Processing commands for [EMAIL PROTECTED]: > tags 283031 + sarge Bug#283031: libgcc1: Missing Depends: libunwind7 [ia64] breaks many things There were no tags set. Tags added: sarge > thanks Stopping processing here. Please contact me if you need assistance. Debian bug tracking system administrator (administrator, Debian Bugs database)
[Bug target/18823] [3.4 regression] [ia64-linux] ICE in ia64_st_address_bypass_p, at config/ia64/ia64.c:7387
-- What|Removed |Added Keywords||ice-on-valid-code Known to work|3.3.5 |3.3.5 4.0.0 Target Milestone|--- |3.4.4 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18823 --- You are receiving this mail because: --- You reported the bug, or are watching the reporter.
[Bug rtl-optimization/16052] [3.4/4.0 Regression] strength reduction produces wrong code
--- Additional Comments From steven at gcc dot gnu dot org 2004-12-04 13:43 --- Fails on all ix86 -- What|Removed |Added GCC build triplet|i386-unknown-netbsdelf2.0F | GCC host triplet|i386-unknown-netbsdelf2.0F | GCC target triplet|i386-unknown-netbsdelf2.0F | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16052 --- You are receiving this mail because: --- You are on the CC list for the bug, or are watching someone who is.
[Bug tree-optimization/18694] [4.0 regression] loop miscompilation at -O1 (-ftree-ch)
--- Additional Comments From steven at gcc dot gnu dot org 2004-12-04 13:56 --- $ ./xgcc -B. -O2 t.c $ ./a.out 1 2 5476394742290156872 $ ./xgcc -B. -O2 t.c -fno-tree-dce $ ./a.out 1 2 4 -- What|Removed |Added Last reconfirmed|2004-11-27 22:56:51 |2004-12-04 13:56:43 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18694 --- You are receiving this mail because: --- You are on the CC list for the bug, or are watching someone who is.
[Bug tree-optimization/18694] [4.0 regression] loop miscompilation at -O1 (-ftree-ch)
--- Additional Comments From steven at gcc dot gnu dot org 2004-12-04 14:40 --- Simpler test case: #include #include typedef long *GEN; static inline long * stoi(long n) { long * z=(long *)malloc(sizeof(long)); *z=n; return z; } void divisors_bug(long * *t, long e) { long j; long **d, **old_d, **act_d, **tmp; d = t; *++d = stoi(1); for (old_d=t,j=e; j; j--) { for (act_d=d, tmp=old_d; tmp < act_d; ) *++d = stoi(**++tmp * 2); old_d=act_d; } } int main(void) { long *t[4]; long i; divisors_bug(t,2); for(i=1;i<4;i++) printf("%ld ",*t[i]); printf("\n"); return 0; } When I comment out the first PHI-OPT pass, this gives: 1 2 4 With PHI-OPT not commented out, I get: 1 2 0 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18694 --- You are receiving this mail because: --- You are on the CC list for the bug, or are watching someone who is.
[Bug tree-optimization/18694] [4.0 regression] loop miscompilation at -O1 (-ftree-ch)
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-12-04 14:59 --- (In reply to comment #8) > Simpler test case: > > When I comment out the first PHI-OPT pass, this gives: > 1 2 4 > > With PHI-OPT not commented out, I get: > 1 2 0 Are you sure because I cannot reproduce it when comment out the frist phiopt pass. This is on ppc- darwin by the way. I still get a bus error. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18694 --- You are receiving this mail because: --- You are on the CC list for the bug, or are watching someone who is.
[Bug tree-optimization/18694] [4.0 regression] loop miscompilation at -O1 (-ftree-ch)
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-12-04 17:43 --- DOM is defintely messing it up before if (d_2 > tmp_14) goto ; else goto ; after: if (t_6 < d_8) goto ; else goto ; the comparision changed -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18694 --- You are receiving this mail because: --- You are on the CC list for the bug, or are watching someone who is.
[Bug tree-optimization/18694] [4.0 regression] loop miscompilation at -O1 (-ftree-ch)
--- Additional Comments From steven at gcc dot gnu dot org 2004-12-04 23:26 --- Looks like a jump threading problem. Given this test case: void divisors_bug(long *t, long e) { long int *d2; long int *tmp; long int *act_d; long int *old_d; long int *d; long int j; int t1, t2; d = t; ++d; *d = 1; old_d = t; j = e; outer_loop_test: if (j != 0) goto outer_loop_entry; else goto outer_loop_exit; outer_loop_entry: d2 = d; tmp = old_d; inner_loop_test: if (d <= tmp) goto inner_loop_exit; d2++; tmp++; t1 = *tmp; t2 = t1 * 2; *d2 = t2; goto inner_loop_test; inner_loop_exit: j = j - 1; old_d = d; d = d2; goto outer_loop_test; outer_loop_exit: return; } I have the following in one of the dominator passes: divisors_bug (t, e) { void inner_loop_exit = <<< error >>>; void inner_loop_test = <<< error >>>; void outer_loop_exit = <<< error >>>; void outer_loop_entry = <<< error >>>; void outer_loop_test = <<< error >>>; int t2; int t1; long int j; long int * d; long int * old_d; long int * act_d; long int * tmp; long int * d2; long int D.1484; long int D.1483; # BLOCK 0 # PRED: ENTRY d_8 = t_6 + 8B; # TMT.0_26 = V_MAY_DEF ; *d_8 = 1; if (e_10 != 0) goto ; else goto ; # SUCC: 2 5 # BLOCK 1 # PRED: 4 outer_loop_test:; if (j_14 != 0) goto ; else goto ; # SUCC: 2 5 # BLOCK 2 # PRED: 0 1 # TMT.0_23 = PHI ; # j_3 = PHI ; # old_d_2 = PHI ; # d_1 = PHI ; # TMT.0_16 = PHI ; # tmp_15 = PHI ; # d2_13 = PHI ; :; if (d_1 <= tmp_15) goto inner_loop_exit; else goto ; # SUCC: 4 3 # BLOCK 3 # PRED: 2 3 # TMT.0_12 = PHI ; # d2_11 = PHI ; # tmp_5 = PHI ; :; d2_17 = d2_11 + 8B; tmp_18 = tmp_5 + 8B; # VUSE ; D.1483_19 = *tmp_18; t1_20 = (int) D.1483_19; t2_21 = t1_20 * 2; D.1484_22 = (long int) t2_21; # TMT.0_27 = V_MAY_DEF ; *d2_17 = D.1484_22; if (d_1 <= tmp_18) goto inner_loop_exit; else goto ; # SUCC: 4 3 # BLOCK 4 # PRED: 3 2 6 # TMT.0_9 = PHI ; # d2_7 = PHI ; inner_loop_exit:; j_14 = j_3 - 1; goto (outer_loop_test); # SUCC: 1 # BLOCK 5 # PRED: 1 0 :; return; # SUCC: EXIT # BLOCK 6 # PRED: # TMT.0_23 = PHI <>; # j_3 = PHI <>; # old_d_2 = PHI <>; # d_1 = PHI <>; # TMT.0_16 = PHI <>; # tmp_15 = PHI <>; # d2_13 = PHI <>; goto (inner_loop_exit); # SUCC: 4 } which we turn into this: divisors_bug (t, e) { void inner_loop_exit = <<< error >>>; void inner_loop_test = <<< error >>>; void outer_loop_exit = <<< error >>>; void outer_loop_entry = <<< error >>>; void outer_loop_test = <<< error >>>; int t2; int t1; long int j; long int * d; long int * old_d; long int * act_d; long int * tmp; long int * d2; long int D.1484; long int D.1483; # BLOCK 0 # PRED: ENTRY d_8 = t_6 + 8B; # TMT.0_26 = V_MAY_DEF ; *d_8 = 1; if (e_10 != 0) goto ; else goto ; # SUCC: 2 5 # BLOCK 1 # PRED: 4 outer_loop_test:; if (j_14 != 0) goto ; else goto ; # SUCC: 6 5 # BLOCK 2 # PRED: 0 # TMT.0_23 = PHI ; # j_3 = PHI ; # old_d_2 = PHI ; # d_1 = PHI ; # TMT.0_16 = PHI ; # tmp_15 = PHI ; # d2_13 = PHI ; :; if (d_1 <= tmp_15) goto inner_loop_exit; else goto ; # SUCC: 4 3 # BLOCK 3 # PRED: 2 3 # TMT.0_12 = PHI ; # d2_11 = PHI ; # tmp_5 = PHI ; :; d2_17 = d2_11 + 8B; tmp_18 = tmp_5 + 8B; # VUSE ; D.1483_19 = *tmp_18; t1_20 = (int) D.1483_19; t2_21 = t1_20 * 2; D.1484_22 = (long int) t2_21; # TMT.0_27 = V_MAY_DEF ; *d2_17 = D.1484_22; if (d_1 <= tmp_18) goto inner_loop_exit; else goto ; # SUCC: 4 3 # BLOCK 4 # PRED: 3 2 6 # TMT.0_9 = PHI ; # d2_7 = PHI ; inner_loop_exit:; j_14 = j_3 - 1; goto (outer_loop_test); # SUCC: 1 # BLOCK 5 # PRED: 1 0 :; return; # SUCC: EXIT # BLOCK 6 # PRED: 1 # TMT.0_23 = PHI ; # j_3 = PHI ; # old_d_2 = PHI ; # d_1 = PHI ; # TMT.0_16 = PHI ; # tmp_15 = PHI ; # d2_13 = PHI ; :; goto (inner_loop_exit); # SUCC: 4 } Note that when optimizing basic block 3, we do a jump thread: Optimizing statement :; Optimizing statement d2_17 = d2_11 + 8B; Optimizing statement tmp_18 = tmp_5 + 8B; Optimizing statement D.1483_19 = *tmp_18; Optimizing statement t1_20 = (int) D.1483_19; Optimizing statement t2_21 = t1_20 * 2; Optimizing statement D.1484_22 = (long int) t2_21; Optimizing statement *d2_17 = D.1484_22; Optimizing statement if (d_1 <= tmp_18) goto inner_loop_exit; else goto ; Threaded jump 1 --> 2 to 6 This is the only transformation we do in DOM in this case, and apparently it's not a correct one (but it's late so I'll leave it for Pinski to look at it more closely :-) -- http://gcc.gnu.org
Bug#279185: Confirming fixed
Thank you. -- Ken Foskey