diff options
author | Reid Kleckner <rnk@google.com> | 2016-02-19 23:55:38 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2016-02-19 23:55:38 +0000 |
commit | 344078f51fcd0a63e3e37692d42914ea5fafb098 (patch) | |
tree | dbfeb4e07efb155913ba1fe5d320e3e73b067768 /llvm/lib/MC/MCCodeView.cpp | |
parent | 953d593cd73bac9a9ccde5dd8367171eb49632a7 (diff) | |
download | llvm-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.cpp | 5 |
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(); |