[all-commits] [llvm/llvm-project] afd8bd: [CSSPGO][llvm-profgen] Filter out the instructions...

ictwanglei via All-commits all-commits at lists.llvm.org
Fri Feb 12 16:48:44 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: afd8bd601eaf268357e2cc0cf4c0382732fcf923
      https://github.com/llvm/llvm-project/commit/afd8bd601eaf268357e2cc0cf4c0382732fcf923
  Author: wlei <wlei at fb.com>
  Date:   2021-02-12 (Fri, 12 Feb 2021)

  Changed paths:
    M llvm/test/tools/llvm-profgen/inline-cs-noprobe.test
    M llvm/test/tools/llvm-profgen/noinline-cs-noprobe.test
    M llvm/test/tools/llvm-profgen/recursion-compression-noprobe.test
    M llvm/tools/llvm-profgen/PerfReader.cpp
    M llvm/tools/llvm-profgen/ProfileGenerator.cpp
    M llvm/tools/llvm-profgen/ProfiledBinary.cpp
    M llvm/tools/llvm-profgen/ProfiledBinary.h

  Log Message:
  -----------
  [CSSPGO][llvm-profgen] Filter out the instructions without location info for symbolizer

It appears some instructions doesn't have the debug location info and the symbolizer will return an empty call stack for them which will cause some crash later in profile unwinding. Actually we do not record the sample info for them, so this change just filter out those instruction.

As those instruction would appears at the begin and end of the instruction list, without them we need to add the boundary check for IP `advance` and `backward`.

Also for pseudo probe based profile, we actually don't need the symbolized location info, so here just change to use an empty stack for it. This could save half of the binary loading time.

Differential Revision: https://reviews.llvm.org/D96434




More information about the All-commits mailing list