mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-23 06:21:11 +00:00
Emit code16 in assembly in 16-bit mode
Summary: When generating assembly using -m16 we must explicitly mark it as 16-bit. Emit .code16 at beginning of file. Fixes wrong results when using -fno-integrated-as. Reviewers: dwmw2 Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D19392 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@267152 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ad461d6067
commit
3211e2dbdd
@ -538,6 +538,12 @@ void X86AsmPrinter::EmitStartOfAsmFile(Module &M) {
|
||||
}
|
||||
}
|
||||
OutStreamer->EmitSyntaxDirective();
|
||||
|
||||
// If this is not inline asm and we're in 16-bit
|
||||
// mode prefix assembly with .code16.
|
||||
bool is16 = TT.getEnvironment() == Triple::CODE16;
|
||||
if (M.getModuleInlineAsm().empty() && is16)
|
||||
OutStreamer->EmitAssemblerFlag(MCAF_Code16);
|
||||
}
|
||||
|
||||
static void
|
||||
|
20
test/CodeGen/X86/x86-16.ll
Normal file
20
test/CodeGen/X86/x86-16.ll
Normal file
@ -0,0 +1,20 @@
|
||||
; RUN: llc < %s | FileCheck %s
|
||||
target datalayout = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
|
||||
target triple = "i386-unknown-linux-code16"
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @main() #0 {
|
||||
%retval = alloca i32, align 4
|
||||
store i32 0, i32* %retval, align 4
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
; CHECK: .code16
|
||||
; CHECK-LABEL: main
|
||||
|
||||
|
||||
attributes #0 = { nounwind }
|
||||
|
||||
!llvm.ident = !{!0}
|
||||
|
||||
!0 = !{!"clang version 3.9.0 (trunk 265439) (llvm/trunk 265567)"}
|
Loading…
x
Reference in New Issue
Block a user