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, >> etc.) >> >> 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. Richard