patch to reduce register pressure from strength reduction
Joern Rennecke
amylaar@cygnus.co.uk
Thu Jan 28 15:27:00 GMT 1999
> Although I haven't proof yet that this was caused by your patch, your
> changes were the largest ones between this bootstrap and yesterday's.
Indeed, I found that recombine_givs caused the use of an uninitialized
pseudo.
> On what system did you test this ? (Just wondering because x86's seem
> so ubiquitous that it's sort of strange that the build breaks on it).
I did a SH cross torture test and an x86 native torture test. I don't
like bootstraps for tests because it doesn't allow to rebuild the
compiler at will - if I can find the same bug with a c-torture failure,
it's usually much faster to find out what is wrong.
I've made the following patch, which I am currently testing:
Wed Jan 27 23:39:53 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
* loop.c (recombine_givs): Don't try to derive givs that have combined.
*** loop.c-1999012820 Thu Jan 28 20:10:04 1999
--- loop.c Thu Jan 28 23:01:45 1999
*************** recombine_givs (bl, loop_start, loop_end
*** 7269,7284 ****
rtx sum;
v = giv_array[stats[i].giv_number];
! if (v->giv_type != DEST_REG || v->derived)
continue;
if (! last_giv)
{
! if (! v->same)
! {
! last_giv = v;
! life_start = stats[i].start_luid;
! life_end = stats[i].end_luid;
! }
continue;
}
/* Use unsigned arithmetic to model loop wrap around. */
--- 7269,7281 ----
rtx sum;
v = giv_array[stats[i].giv_number];
! if (v->giv_type != DEST_REG || v->derived || v->same)
continue;
if (! last_giv)
{
! last_giv = v;
! life_start = stats[i].start_luid;
! life_end = stats[i].end_luid;
continue;
}
/* Use unsigned arithmetic to model loop wrap around. */
More information about the Gcc-patches
mailing list