Variable Tracking Optimisation

Variable Tracking is enabled with -fvar-tracking and -fvar-tracking-assignments and imposes a significant hit in GCC's runtime. By default it's on when optimisation is turned on (not -O0). Its functionality as described in the man page:

-fvar-tracking
Run variable tracking pass. It computes where variables are stored at each position in code. Better debugging information is then generated (if the debugging information format supports this information).
-fvar-tracking-assignments
Annotate assignments to user variables early in the compilation and attempt to carry the annotations over throughout the compilation all the way to the end, in an attempt to improve debug information while optimizing. Use of -gdwarf-4 is recommended along with it.

Call Graph

filename:function_name

(times called)

[instruction count]

var-tracking.c:variable_tracking_main

(281x)

[906,335,930]

  * vt_find_locations

(281x)

[443,407,922]

    * compute_bb_dataflow.isra.47

(2880x)

[218,273,651]

      * hashtab.c:htab_traverse

(5760x)

[83,210,655]

      * dataflow_set_clear_at_call

(1602x)

[40,369,933]

      * val_resolve

(13499x)

[33,190,367]

      * val_store.isra.45

(23146x)

[28,235,625]

    * dataflow_set_merge

(1532x)

[179,565,916]

      * hashtab.c:htab_find_slot_with_hash

(517626x)

[49,723,253]

      * canonicalize_values_star

(158507x)

[47,859,321]

      * dataflow_set_merge

(time in itself)

[29,342,572]

  * vt_emit_notes

(281x)

[289,064,476]

    * emit_notes_for_changes

(41867x)

[101,222,454]

    * hashtab.c:htab_traverse

(4452x)

[63,191,876]

    * dataflow_set_clear

(6678x)

[35,511,826]

    * dataflow_set_clear_at_call

(1310x)

[27,225,621]

  * vt_initialize

(281x)

[163,238,208]

    * cselib.c:cselib_process_insn

(21693x)

[110,542,973]

      * cselib_record_sets

None: Optimise variable_tracking (last edited 2011-08-05 22:03:19 by 139)