On Tue, May 27, 2014 at 3:26 PM, Bernd Schmidt <ber...@codesourcery.com> wrote:
> When putting a constant into the constant pool, we make a copy of the tree
> in build_constant_desc. This caused me some problems with the ptx backend,
> which has a pass to modify the address spaces of all variables and constants
> to match the requirements of the backend. It would be nice for it to be able
> to find them all by walking the varpool and the gimple of all functions, and
> I ran into some testcases where these copies can slip through.
>
> After a while it occurred to me that the copy is probably a relic of old
> obstack times and not necessary anymore. And indeed, in 2.7.2.3 the only
> call to it looked like this:
>           push_obstacks_nochange ();
>           suspend_momentary ();
>           p->exp = copy_constant (exp);
>           pop_obstacks ();
>
> It seems unlikely that anything in the compiler would want to modify a
> constant after it has been put into the constant pool, and even if so, it
> should have the responsibility of making the copy itself. So, as an
> experiment I've bootstrapped and tested the following patch (x86_64-linux),
> and that seemed to work. Ok to apply along with removal of the now unused
> copy_constant?

Ok if nobody raises issues within 24h.

Thanks,
Richard.

>
> Bernd
>

Reply via email to