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 |
|
|