This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC Status Report (2004-03-09)


Eric Botcazou wrote:

Can't we at least detect the case where either the whole aggregate
is const or all its fields are const? Then we don't need any blockage.



Guess what? The constness is not propagated to the RTL in the former case, because of the pessimization recently introduced in maybe_set_unchanging:


    We cannot do this for non-static aggregates, because of the double
    writes that can be generated by store_constructor, depending on the
    contents of the initializer.  Yes, this does eliminate a good fraction
    of the number of uses of RTX_UNCHANGING_P for a language like Ada.
    It also eliminates a good quantity of bugs.  Let this be incentive to
    eliminate RTX_UNCHANGING_P entirely in favor of a more reliable
    solution, perhaps based on alias sets.  */

This means that const automatic aggregates would take a double pessimization with the blockage scheme.


Well, so, let's remove that chunk of code; it should no longer be needed.

Eric, I can tell you're unhappy with this approach, and so you're casting about for something better. That's good, but I think we've come as far as we can for 3.4.0. If all this is sufficiently annoyhing to you, maybe you can work on ripping out RTX_UNCHANGING_P for 3.5 and replacing it with something better!

--
Mark Mitchell
CodeSourcery, LLC
(916) 791-8304
mark@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]