This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH [mainline] speed up comparing enums declared in multiple translation units
On Mar 9, 2004, at 12:27 PM, Andrew Pinski wrote:
On Mar 9, 2004, at 12:13, Fariborz Jahanian wrote:
This is a performance bug fix which prevents mesa (SPEC program) to
compile with IMA in a
reasonable amount of time. Performance hit is comparing two
enumerated types declared in
different translation unit. Fix is in routine
tagged_types_tu_compatible_p and uses
the infrastructure already there to prevent recursion when comparing
composite types.
Essentially it remembers previous comparison results of the two enum
types and uses the
saved result. bootstrapped, dejagnu tested on ppc-darwin.
Furthermore, tested against
SPEC benchmark with IMA. mesa now takes minutes to compile, instead
of days (on my
particular G5 machine anyway).
OK for mainline?
Why are you getting rid of the code which I put in there to speed it
up in the first place?
"Speed up the case where the type values are in the same order".
What code? I am working off the tree-ssa branch. This patch works
regardless of any
assumption of type values.
Now I know with my patch it takes only about an hour on my laptop to
compile with my patch
(this is a 800MHz G4).
Also it looks like your patch can make a huge memory problem with many
different enums.
As you can produce n^2 mallocs which can cause even worse problems,
there has to be a better
way than both of our solutions.
All mallocs are freed, after the structs in which enums are used are
themselves compared. I don't
see n is being that large.
Can you try again mesa with my patch already applied as it looks like
you did not?
Again, I don't know what patch you are referring to?
- thanks, fariborz
Thanks,
Andrew Pinski