[Bug c++/13776] [tree-ssa] Many C++ compile-time regression in 3.5-tree-ssa 040120

Richard Guenther rguenth@tat.physik.uni-tuebingen.de
Sat Mar 13 12:34:00 GMT 2004


dberlin at dberlin dot org wrote:
> ------- Additional Comments From dberlin at dberlin dot org  2004-03-13 02:02 -------
> Subject: Re:  [tree-ssa] Many C++ compile-time regression in 3.5-tree-ssa 040120
> 
> 
> 
>>instrumented compiler gives:
>>
>>Flat profile:
>>
>>Each sample counts as 0.01 seconds.
>>   %   cumulative   self              self     total
>>  time   seconds   seconds    calls  Ks/call  Ks/call  name
>>  15.51    183.22   183.22   726080     0.00     0.00
>>process_left_occs_and_kills
> 
> 
> 
> This one is O(n^2) or O(n^3) in the number of vuses.  Known problem. a 
> fix is really complicated.
> 
> 
> 
>>   8.55    284.25   101.03    16644     0.00     0.00
>>create_and_insert_occ_in_preorder_dt_order
> 
> 
> Hmmmm.
> It is attempting to PRE 16664 things.
> How many basic blocks do you have?
> We shouldn't end up with trying to PRE that many expressions, since we 
> only try to PRE things that occur at least twice.
> 
> 
> You must have an incredibly large number of basic blocks or something, 
> or a very weird flowgraph.
> How many BB's are we talking about?
> 
> I can't fix the algorithmic properties of the SSAPRE algorithm we use, 
> which is what you are running into, i'm betting.
> 
> I'm working on a new PRE implementation that is O(n^2) memory usage in 
> the number of phi nodes, but should be a bit faster overall.

I'm trying to look at some dump files now - looking at the optimized 
dump, is it ok to have loads of "duplicate" variable declarations in the 
dump? Like

...
   struct Domain<3,DomainTraits<Loc<3> > > * const this;
   int d;
   int d;
   int <D1144454>;
   int d;
   int T.4364;
...

and a lot more of int d farther away? Also, how are bb's marked? I see 
<bb 0>: but no more, and some gotos reference <bb 18> and <bb 16> (with 
a label, too)?

Can I get summaries somehow here?  Or just dump one interesting function 
rather than all of the program?

Also, how do I dump some stuff about the PRE pass?  Specifying 
-fdump-tree-pre just dumps the trees after PRE with no information about 
the PRE pass itself.

Thanks,

Richard.



More information about the Gcc mailing list