aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCCodeView.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-02-19 23:55:38 +0000
committerReid Kleckner <rnk@google.com>2016-02-19 23:55:38 +0000
commit344078f51fcd0a63e3e37692d42914ea5fafb098 (patch)
treedbfeb4e07efb155913ba1fe5d320e3e73b067768 /llvm/lib/MC/MCCodeView.cpp
parent953d593cd73bac9a9ccde5dd8367171eb49632a7 (diff)
downloadllvm-344078f51fcd0a63e3e37692d42914ea5fafb098.zip
llvm-344078f51fcd0a63e3e37692d42914ea5fafb098.tar.gz
llvm-344078f51fcd0a63e3e37692d42914ea5fafb098.tar.bz2
[codeview] Fix emission of file changes in inline line tables
These are supposed to be file checksum table offsets, not file ids. llvm-svn: 261379
Diffstat (limited to 'llvm/lib/MC/MCCodeView.cpp')
-rw-r--r--llvm/lib/MC/MCCodeView.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/MC/MCCodeView.cpp b/llvm/lib/MC/MCCodeView.cpp
index 029bab1..cd19e6a 100644
--- a/llvm/lib/MC/MCCodeView.cpp
+++ b/llvm/lib/MC/MCCodeView.cpp
@@ -311,8 +311,11 @@ void CodeViewContext::encodeInlineLineTable(MCAsmLayout &Layout,
WithinFunction = true;
if (Loc.getFileNum() != LastLoc->getFileNum()) {
+ // File ids are 1 based, and each file checksum table entry is 8 bytes
+ // long. See emitFileChecksums above.
+ unsigned FileOffset = 8 * (Loc.getFileNum() - 1);
compressAnnotation(ChangeFile, Buffer);
- compressAnnotation(Loc.getFileNum(), Buffer);
+ compressAnnotation(FileOffset, Buffer);
}
int LineDelta = Loc.getLine() - LastLoc->getLine();