On Wed, Mar 7, 2012 at 11:52 AM, Richard Sandiford
> Richard Guenther <richard.guent...@gmail.com> writes:
>> On Wed, Mar 7, 2012 at 11:11 AM, Richard Sandiford
>> <rdsandif...@googlemail.com> wrote:
>>> Jakub Jelinek <ja...@redhat.com> writes:
>>>> On Wed, Mar 07, 2012 at 09:52:51AM +0000, Richard Sandiford wrote:
>>>>> This patch restores x86_64-linux-gnu bootstrap after my patch for 52372.
>>>>> Applied as obvious.
>>>>> Sorry for the breakage.
>>>> Was it really necessary to move these out of the global rtx array?
>>>> Now you completely unnecessarily have 4 new GTY roots with all the overhead
>>>> it has. Wouldn't just moving their initialization elsewhere be sufficient?
>>> It had to be outside the "global" array, because that's a per-target thing.
>>> E.g. MIPS16 and non-MIPS16 have separate target_rtl structures, but ought
>>> to have the same pc_rtx (just as they ought to have the same const0_rtx,
>>> I hadn't realised that the overhead of 4 roots was much greater than the
>>> overhead of one root pointing to a 4-element array. We could have a new
>>> 4-element array if that's a problem.
>> Why can't you put the same RTXen in the per-target rtl structures?
> But where does it stop? Do we move const_tiny_rtx to the target
> structure too?
> Logically, the target structure should be for target-specific rtl.
> Target-independent rtl like constants, (cc0), (pc), etc., should be
> shared between targets. It seems a shame if GC inefficiencies
> force us to use a different scheme.
Ok, if we know for certain this rtl will be never target specific (consider
a gcc for multiple targets, sparc and x86_64 for example), then we
should have a single structure that contains all those global rtxen.