OSDN Git Service

Support using sample profiles with partial debug info.
authorDiego Novillo <dnovillo@google.com>
Wed, 22 Oct 2014 12:59:00 +0000 (12:59 +0000)
committerDiego Novillo <dnovillo@google.com>
Wed, 22 Oct 2014 12:59:00 +0000 (12:59 +0000)
commit418d0cf1c1b2d0c7b9cb7cbb37ed664af4c03d9e
treef0261d38b6ba80e056e60f5ba000efea88723cdc
parentc9ada07cca8e6e49601d69186c2b38399fa7f775
Support using sample profiles with partial debug info.

Summary:
When using a profile, we used to require the use -gmlt so that we could
get access to the line locations. This is used to match line numbers in
the input profile to the line numbers in the function's IR.

But this is actually not necessary. The driver can provide source
location tracking without the emission of debug information. In these
cases, the annotation 'llvm.dbg.cu' is missing from the IR, but the
actual line location annotations are still present.

This patch adds a new way of looking for the start of the current
function. Instead of looking through the compile units in llvm.dbg.cu,
we can walk up the scope for the first instruction in the function with
a debug loc. If that describes the function, we use it. Otherwise, we
keep looking until we find one.

If no such instruction is found, we then give up and produce an error.

Reviewers: echristo, dblaikie

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D5887

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220382 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/SampleProfile.cpp
test/Transforms/SampleProfile/calls.ll