Processed: tag gcc report as sarge only

2004-12-04 Thread Debian Bug Tracking System
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

2004-12-04 Thread pinskia at gcc dot gnu dot org


-- 
   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

2004-12-04 Thread steven at gcc dot gnu dot org

--- 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)

2004-12-04 Thread steven at gcc dot gnu dot org

--- 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)

2004-12-04 Thread steven at gcc dot gnu dot org

--- 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)

2004-12-04 Thread pinskia at gcc dot gnu dot org

--- 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)

2004-12-04 Thread pinskia at gcc dot gnu dot org

--- 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)

2004-12-04 Thread steven at gcc dot gnu dot org

--- 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

2004-12-04 Thread Ken Foskey
Thank you.

-- 
Ken Foskey