This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/33669] [4.3 Regression] Revision 128957 miscompiles 481.wrf
- From: "hjl at lucon dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 6 Oct 2007 16:16:55 -0000
- Subject: [Bug rtl-optimization/33669] [4.3 Regression] Revision 128957 miscompiles 481.wrf
- References: <bug-33669-682@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #8 from hjl at lucon dot org 2007-10-06 16:16 -------
(In reply to comment #7)
> Subject: Re: [4.3 Regression] Revision 128957
> miscompiles 481.wrf
>
> hjl at lucon dot org wrote:
> > ------- Comment #5 from hjl at lucon dot org 2007-10-06 02:07 -------
> > Kenny, does your patch
> >
> > http://gcc.gnu.org/ml/gcc-patches/2007-10/msg00124.html
> >
> > handle cases where number of consecutive hard regs needed to hold some mode > 1
> > correctly? IA32 needs 2 hard registers to hold long long and your patch
> > miscompiles the testcase in comment #4.
> >
> >
> >
> I will look into it. It should do this correctly.
>
Can you take a look at
while (regno < last)
{
if ((!TEST_HARD_REG_BIT (hard_regs_live, regno))
&& (!TEST_HARD_REG_BIT (renumbers_live, regno))
&& ! fixed_regs[regno])
{
if (dump_file)
fprintf (dump_file, " dying hard reg %d\n",
regno);
if (renumbering)
SET_HARD_REG_BIT (renumbers_live, regno);
else
SET_HARD_REG_BIT (hard_regs_live, regno);
added = true;
}
regno++;
}
in global_conflicts? Should it also check live_subregs before marking
a hard register is dying?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33669