forked from OSchip/llvm-project
Support -masm= flag for x86 targets.
`clang -S -o - file.c -masm=att` will write assembly to stdout in at&t syntax (the default), `-masm=intel` will instead output intel style asm. llvm-svn: 208683
This commit is contained in:
parent
7d07fe20a0
commit
ad8e36c41a
|
@ -1005,6 +1005,7 @@ def m3dnow : Flag<["-"], "m3dnow">, Group<m_x86_Features_Group>;
|
|||
def m64 : Flag<["-"], "m64">, Group<m_Group>, Flags<[DriverOption, CoreOption]>;
|
||||
def mabi_EQ : Joined<["-"], "mabi=">, Group<m_Group>;
|
||||
def march_EQ : Joined<["-"], "march=">, Group<m_Group>;
|
||||
def masm_EQ : Joined<["-"], "masm=">, Group<m_Group>, Flags<[DriverOption]>;
|
||||
def mcmodel_EQ : Joined<["-"], "mcmodel=">, Group<m_Group>;
|
||||
def mconstant_cfstrings : Flag<["-"], "mconstant-cfstrings">, Group<clang_ignored_m_Group>;
|
||||
def mcpu_EQ : Joined<["-"], "mcpu=">, Group<m_Group>;
|
||||
|
|
|
@ -1486,6 +1486,17 @@ void Clang::AddX86TargetArgs(const ArgList &Args,
|
|||
}
|
||||
if (NoImplicitFloat)
|
||||
CmdArgs.push_back("-no-implicit-float");
|
||||
|
||||
if (Arg *A = Args.getLastArg(options::OPT_masm_EQ)) {
|
||||
StringRef Value = A->getValue();
|
||||
if (Value == "intel" || Value == "att") {
|
||||
CmdArgs.push_back("-mllvm");
|
||||
CmdArgs.push_back(Args.MakeArgString("-x86-asm-syntax=" + Value));
|
||||
} else {
|
||||
getToolChain().getDriver().Diag(diag::err_drv_unsupported_option_argument)
|
||||
<< A->getOption().getName() << Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline bool HasPICArg(const ArgList &Args) {
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
// RUN: %clang -target i386-unknown-linux -masm=intel %s -S -o - | FileCheck --check-prefix=CHECK-INTEL %s
|
||||
// RUN: %clang -target i386-unknown-linux -masm=att %s -S -o - | FileCheck --check-prefix=CHECK-ATT %s
|
||||
// RUN: not %clang -target i386-unknown-linux -masm=somerequired %s -S -o - 2>&1 | FileCheck --check-prefix=CHECK-SOMEREQUIRED %s
|
||||
// RUN: %clang -target arm-unknown-eabi -masm=intel %s -S -o - 2>&1 | FileCheck --check-prefix=CHECK-ARM %s
|
||||
|
||||
int f() {
|
||||
// CHECK-ATT: movl $0, %eax
|
||||
// CHECK-INTEL: mov eax, 0
|
||||
// CHECK-SOMEREQUIRED: error: unsupported argument 'somerequired' to option 'masm='
|
||||
// CHECK-ARM: warning: argument unused during compilation: '-masm=intel'
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue