This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Pb with clearing const_tiny_rtx in clear_const_double_mem
Thanks for the prompt reply :)
Richard Henderson writes:
> On Fri, Aug 24, 2001 at 03:53:03PM +0200, Olivier Hainque wrote:
> > float f1 = 1.0;
> >
> > void bar (void)
> > {
> > }
> >
> > float f2 = 1.0;
>
> Ug.
Indeed :/
> > I'm unclear as to what the initial problem was.
>
> The nested function wouldn't use the canonical values, which means all of
> the checks for CONST0_RTX etc fail, which causes instructions to not match
> in the alpha backend, as well as lots o missed optimizations.
Humm, I actually discovered that part of the code while investigating the
externally visible infinite loop in the first place, so I don't quite
understand everything here. I'll study more to fill the blanks.
> One way to solve this problem is to swap out these tiny_rtx's in the nested
> context so that they are not shared, but we still match CONST0_RTX. Care
> should be taken so that the original functions are restored by the time we
> get to integrate.c.
I think I see, modulo the before mentioned blanks.
> A larger issue is that it is damned stupid to not share constants between
> functions on machines that just dump constants in .rodata and don't have
> in-function constant pools.
:)
> That's a somewhat large cleanup though.
OK.
Thanks for the hints,
Kind Regards,
Olivier