Haifa buglet

Jeffrey A Law law@cygnus.com
Wed Jan 12 18:49:00 GMT 2000


  In message < 200001121852.SAA09843@cam-mail2.cambridge.arm.com >you write:
  > Jeff's recent change in the call extract_bitlst changed the second 
  > argument to be es (presumably on the assumption that this had been 
  > recently initialized to edgeset_size).  Unfortunately, this is wrong, 
  > since es is then used as a loop iterator so by the time of the call is 
  > always -1.  Patch below installed also adds a declartion for bitlen.
  > 
  > This fixes a bootstrap error on the ARM when the scheduler incorrectly 
  > steals an increment insn from another block even though the edge is 
  > conditional and the reg is live across both exit routes.
Yup.  This fixed the PA bug I was working on.

Jeff
  > 
  > R.
  > 
  > 2000-01-12  Richard Earnshaw <rearnsha@arm.com>
  > 
  > 	* haifa-sched.c (split_edges): Pass edgeset_size as second arg to
  > 	extract_bitlst.
  > 	(extract_bitlist): Declare bitlen.
  > 
  > 
  > --==_Exmh_13719096420
  > Content-Type: application/x-patch ; name="haifa.patch"
  > Content-Description: haifa.patch
  > Content-Disposition: attachment; filename="haifa.patch"
  > 
  > Index: haifa-sched.c
  > ===================================================================
  > RCS file: /cvs/gcc/egcs/gcc/haifa-sched.c,v
  > retrieving revision 1.137
  > diff -p -r1.137 haifa-sched.c
  > *** haifa-sched.c	2000/01/11 12:50:18	1.137
  > --- haifa-sched.c	2000/01/12 18:45:18
  > *************** static void
  > *** 1222,1227 ****
  > --- 1222,1228 ----
  >   extract_bitlst (set, len, bitlen, bl)
  >        bitset set;
  >        int len;
  > +      int bitlen;
  >        bitlst *bl;
  >   {
  >     int i, j, offset;
  > *************** split_edges (bb_src, bb_trg, bl)
  > *** 1896,1902 ****
  >     while (es--)
  >       src[es] = (pot_split[bb_src])[es];
  >     BITSET_DIFFER (src, pot_split[bb_trg], edgeset_size);
  > !   extract_bitlst (src, es, edgeset_bitsize, bl);
  >     free (src);
  >   }
  >   
  > --- 1897,1903 ----
  >     while (es--)
  >       src[es] = (pot_split[bb_src])[es];
  >     BITSET_DIFFER (src, pot_split[bb_trg], edgeset_size);
  > !   extract_bitlst (src, edgeset_size, edgeset_bitsize, bl);
  >     free (src);
  >   }
  >   
  > 
  > --==_Exmh_13719096420--
  > 
  > 
  > 




More information about the Gcc-patches mailing list