mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 20:29:53 +00:00
Fix for PR14264 cause by commit r167237 which did not take into account a
possible buffer change with a .macro directive. rdar://12637628 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167408 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7895353b75
commit
32c1a82a6b
@ -154,6 +154,7 @@ private:
|
||||
StringRef CppHashFilename;
|
||||
int64_t CppHashLineNumber;
|
||||
SMLoc CppHashLoc;
|
||||
int CppHashBuf;
|
||||
|
||||
/// AssemblerDialect. ~OU means unset value and use value provided by MAI.
|
||||
unsigned AssemblerDialect;
|
||||
@ -1403,7 +1404,7 @@ bool AsmParser::ParseStatement(ParseStatementInfo &Info) {
|
||||
getStreamer().EmitDwarfFileDirective(
|
||||
getContext().nextGenDwarfFileNumber(), StringRef(), CppHashFilename);
|
||||
|
||||
unsigned CppHashLocLineNo = SrcMgr.FindLineNumber(CppHashLoc, CurBuffer);
|
||||
unsigned CppHashLocLineNo = SrcMgr.FindLineNumber(CppHashLoc,CppHashBuf);
|
||||
Line = CppHashLineNumber - 1 + (Line - CppHashLocLineNo);
|
||||
}
|
||||
|
||||
@ -1465,6 +1466,7 @@ bool AsmParser::ParseCppHashLineFilenameComment(const SMLoc &L) {
|
||||
CppHashLoc = L;
|
||||
CppHashFilename = Filename;
|
||||
CppHashLineNumber = LineNumber;
|
||||
CppHashBuf = CurBuffer;
|
||||
|
||||
// Ignore any trailing characters, they're just comment.
|
||||
EatToEndOfLine();
|
||||
|
17
test/MC/MachO/gen-dwarf-macro-cpp.s
Normal file
17
test/MC/MachO/gen-dwarf-macro-cpp.s
Normal file
@ -0,0 +1,17 @@
|
||||
// RUN: llvm-mc -g -triple i386-apple-darwin10 %s -filetype=obj -o %t
|
||||
// RUN: llvm-dwarfdump %t | FileCheck %s
|
||||
|
||||
# 1 "foo.S" 2
|
||||
.macro switcher
|
||||
ljmp *0x38(%ecx)
|
||||
.endmacro
|
||||
switcher NaClSwitchNoSSE, 0
|
||||
|
||||
// PR14264 was a crash in the code caused by the .macro not handled correctly
|
||||
// rdar://12637628
|
||||
|
||||
// We check that the source name "foo.S" is picked up
|
||||
// CHECK: Dir Mod Time File Len File Name
|
||||
// CHECK: ---- ---------- ---------- ---------------------------
|
||||
// CHECK: file_names[ 1] 1 0x00000000 0x00000000 gen-dwarf-macro-cpp.s
|
||||
// CHECK: file_names[ 2] 0 0x00000000 0x00000000 foo.S
|
Loading…
Reference in New Issue
Block a user