http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53958

--- Comment #3 from Steven Bosscher <steven at gcc dot gnu.org> 2012-08-26 
23:41:41 UTC ---
Created attachment 28088
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28088
Somewhat reduced, preprocessed test case

On x86_64, compile with:

$ ./cc1plus -m32 -quiet -ftime-report -std=gnu++98 -O2 -g2 PR53958.cc

With 1 "HUN" line I have:

 var-tracking dataflow   :   1.54 (24%) usr
 var-tracking emit       :   1.58 (25%) usr
 TOTAL                 :   6.43


With 2 "HUN" lines, this changes to:

 var-tracking dataflow   :   9.19 (37%) usr
 var-tracking emit       :   8.85 (36%) usr
 TOTAL                 :  24.86


With 3 "HUN" lines, things begin to get really ugly:

 var-tracking dataflow   :  33.39 (43%) usr
 var-tracking emit       :  31.79 (41%) usr
 TOTAL                 :  77.44

With 4 "HUN lines, the last test I ran, the timings are:

 var-tracking dataflow   :  69.47 (80%) usr
 var-tracking emit       :   0.03 ( 0%) usr
 TOTAL                 :  87.2495353 kB

So both the var-tracking dataflow and note emitting initially show quadratic
behavior for this test case, but the emitting appears to have some kind of
cut-off to make it disappear for the last test:

PR53958.cc: In function 'void
construct_core_types(simple_list<input_type_entry>&)':
PR53958.cc:234:6: note: variable tracking size limit exceeded with
-fvar-tracking-assignments, retrying without
 void construct_core_types(simple_list<input_type_entry> &typelist)

This limit is never reached in the original test case.

Reply via email to