]> granicus.if.org Git - llvm/commit
[codeview] Try to avoid emitting .cv_loc with line zero
authorReid Kleckner <rnk@google.com>
Thu, 10 Oct 2019 01:06:01 +0000 (01:06 +0000)
committerReid Kleckner <rnk@google.com>
Thu, 10 Oct 2019 01:06:01 +0000 (01:06 +0000)
commitd399c97984f5ff46001ae271cedfe9ece9332051
treed19c95769418f46842736e3b494049f6ff969ea0
parent154d19dffcb3ed6069e728876327f563d3e1b593
[codeview] Try to avoid emitting .cv_loc with line zero

Summary:
Visual Studio doesn't like it while stepping. It kicks you out of the
source view of the file being stepped through and tries to fall back to
the disassembly view.

Fixes PR43530

The fix is incomplete, because it's possible to have a basic block with
no source locations at all. In this case, we don't emit a .cv_loc, but
that will result in wrong stepping behavior in the debugger if the
layout predecessor of the location-less BB has an unrelated source
location. We could try harder to find a valid location that dominates or
post-dominates the current BB, but in general it's a dataflow problem,
and one still might not exist. I left a FIXME about this.

As an alternative, we might want to consider having the middle-end check
if its emitting codeview and get it to stop using line zero.

Reviewers: akhuang

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@374267 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
test/DebugInfo/COFF/line-zero.ll [new file with mode: 0644]
test/DebugInfo/COFF/local-variables.ll