[all-commits] [llvm/llvm-project] 406e81: [gcov] Ignore blocks from another file

Fangrui Song via All-commits all-commits at lists.llvm.org
Mon Aug 14 10:30:27 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 406e81b79d26dae6838cc69d10a3e22635da09ef
  Author: Fangrui Song <i at maskray.me>
  Date:   2023-08-14 (Mon, 14 Aug 2023)

  Changed paths:
    A compiler-rt/test/profile/Posix/gcov-file-change.cpp
    M llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp

  Log Message:
  [gcov] Ignore blocks from another file

Constructs such as inline variables, #line, and #include can create
lexical blocks with a different filename.
GCOVProfiling and llvm-cov gcov currently don't handle such cases (see
GCOVLines::writeOut and GCOVFile::readGCNO) and would incorrectly
attribute the line number to the current file.

For now, ignore such blocks. Missing line execution counts is better
than wrong ones.


As a workaround that Apple targets don't use -mconstructor-aliases yet,
allow line execution count 4 on the A::A line (1f34e282e8066281eb1447e21e44a2a2e9983e79).

More information about the All-commits mailing list