[LLVMdev] Spilling numbers

Frank Winter fwinter at jlab.org
Mon Aug 3 12:14:48 PDT 2015


Hi!

I am trying to figure out why for more complex function the generated 
code performs so badly. (Currently I am looking at 5% peak).
 From the collected statistics what are the most important numbers to 
look at? I see a lot of spilling-related stuff, but which ones are the 
one that have the biggest impact?

Thanks,
Frank

===-------------------------------------------------------------------------===
                           ... Statistics Collected ...
===-------------------------------------------------------------------------===

  6395 asm-printer       - Number of machine instrs printed
  1395 dagcombine        - Number of dag nodes combined
     3 isel              - Number of blocks selected using DAG
     1 isel              - Number of entry blocks encountered
46005 isel              - Number of times dag isel has to try another path
   528 machine-cse       - Number of copies coalesced
     1 machine-licm      - Number of machine instructions hoisted out of 
loops
     1 machine-licm      - Number of machine instructions hoisted out of 
loops post regalloc
  8648 pei               - Number of bytes used for stack in all functions
     1 phielim           - Number of phis lowered
   665 pre-RA-sched      - Number of loads clustered together
  1472 regalloc          - Number of copies inserted for splitting
     2 regalloc          - Number of cross class joins performed
  1269 regalloc          - Number of folded stack accesses
   573 regalloc          - Number of hoisted spills
   197 regalloc          - Number of identity moves eliminated after 
rewriting
   637 regalloc          - Number of instructions deleted by DCE
   144 regalloc          - Number of instructions re-materialized
  2557 regalloc          - Number of interferences evicted
  2260 regalloc          - Number of interval joins performed
  7412 regalloc          - Number of new live ranges queued
    23 regalloc          - Number of omitted spills of reloads
  5882 regalloc          - Number of registers assigned
  3276 regalloc          - Number of registers unassigned
  1140 regalloc          - Number of reloads inserted
    67 regalloc          - Number of reloads removed
    11 regalloc          - Number of rematerialized defs for spilling
   650 regalloc          - Number of spill slots allocated
   851 regalloc          - Number of spilled live ranges
    81 regalloc          - Number of spilled snippets
   732 regalloc          - Number of spills inserted
    21 regalloc          - Number of spills removed
     1 regalloc          - Number of split global live ranges
  1162 regalloc          - Number of split local live ranges
  1180 regalloc          - Number of splits finished
  1180 regalloc          - Number of splits that were simple
   623 slotindexes       - Number of local renumberings
     1 stackmaps         - Number of functions skipped
     1 stackmaps         - Number of functions visited
   110 stackslotcoloring - Number of stack slots eliminated due to coloring
   118 twoaddrinstr      - Number of instructions aggressively commuted
   216 twoaddrinstr      - Number of instructions commuted to coalesce
  3182 twoaddrinstr      - Number of two-address instructions




More information about the llvm-dev mailing list