mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-11 00:39:36 +00:00
Inline Asm: Ensure buffer is newline terminated to match how the text is printed.
- This is a hack, but I can't decide the best place to handle this. Chris? git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103765 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7ff82e1501
commit
d11d59e35a
@ -53,6 +53,17 @@ void AsmPrinter::EmitInlineAsm(StringRef Str, unsigned LocCookie) const {
|
||||
}
|
||||
|
||||
SourceMgr SrcMgr;
|
||||
|
||||
// Ensure the buffer is newline terminated.
|
||||
char *TmpString = 0;
|
||||
if (Str.back() != '\n') {
|
||||
TmpString = new char[Str.size() + 2];
|
||||
memcpy(TmpString, Str.data(), Str.size());
|
||||
TmpString[Str.size()] = '\n';
|
||||
TmpString[Str.size() + 1] = 0;
|
||||
isNullTerminated = true;
|
||||
Str = TmpString;
|
||||
}
|
||||
|
||||
// If the current LLVMContext has an inline asm handler, set it in SourceMgr.
|
||||
LLVMContext &LLVMCtx = MMI->getModule()->getContext();
|
||||
@ -84,6 +95,9 @@ void AsmPrinter::EmitInlineAsm(StringRef Str, unsigned LocCookie) const {
|
||||
/*NoFinalize*/ true);
|
||||
if (Res && !HasDiagHandler)
|
||||
report_fatal_error("Error parsing inline asm\n");
|
||||
|
||||
if (TmpString)
|
||||
delete[] TmpString;
|
||||
}
|
||||
|
||||
|
||||
|
6
test/Other/inline-asm-newline-terminator.ll
Normal file
6
test/Other/inline-asm-newline-terminator.ll
Normal file
@ -0,0 +1,6 @@
|
||||
; RUN: llc -filetype=obj -o - < %s
|
||||
|
||||
; ModuleID = 't.c'
|
||||
target triple = "x86_64-apple-darwin10.0.0"
|
||||
|
||||
module asm ".desc _f0, 0x10"
|
Loading…
x
Reference in New Issue
Block a user