This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [C++ patch] Cleanup way functions are deferred
> On Saturday, June 21, 2003, at 12:16 PM, Jan Hubicka wrote:
> >the DECL_EXTERNAL/DECL_PUBLIC/DECL_COMDAT flags are set back and forth
> >by C++
> >frontend during finish_file apparently just to avoid confusion of
> >DECL_NEEDED.
> >This confuses my unit-at-a-time code as it sees wrong attributes of the
> >declarations once finish_file is done.
>
> Do you introduce a speed regression? More passes on lists, or scanning
> longer lists are the two main culprits I am thinking about. Ideally,
> we want zero scans on long lists (all decls for example), and hitting
> each one we emit, once.
I do half of traversals of the varray compared to original code and I
simplified condition to rule out non-interesting ones, so it should not
be faster :)
The whole thing should be probably worklist based (ie mark_used should
enqueue functions we want to un-defer). I am doing so inside unit-at-a-time
and then this loop iterates much fewer times than it used to, so perhaps
it is not needed.
Honza
>
> Offhand, the patch looks safe or a speed improvement.
>
> The case I'm thinking about is PCH compilation, 20 files, large C++ pch
> header, small bodied C++ files.