diff options
author | Yunzhong Gao <Yunzhong.Gao@sony.com> | 2016-07-18 18:44:51 +0000 |
---|---|---|
committer | Yunzhong Gao <Yunzhong.Gao@sony.com> | 2016-07-18 18:44:51 +0000 |
commit | fc611138eb9718d267cac07a4b786b55a6d11f77 (patch) | |
tree | 272971b4ea8d3d89db14a725c3205989cd16bd1f /clang/lib/Driver/Tools.cpp | |
parent | a68b8df3a75d4b73bfffd8a91b28b89f9304e73b (diff) | |
download | llvm-fc611138eb9718d267cac07a4b786b55a6d11f77.zip llvm-fc611138eb9718d267cac07a4b786b55a6d11f77.tar.gz llvm-fc611138eb9718d267cac07a4b786b55a6d11f77.tar.bz2 |
Support -masm= flag for x86 assembly targets.
For assembly files without .intel_syntax or .att_syntax directives, allow the
-masm= flag to supply a default assembly dialect. For example,
C:\TMP> type intel.s
.text
mov al,0
C:\TMP> clang -masm=intel -c intel.s
Without this patch, one would need to pass an "-mllvm -x86-asm-syntax=" flag
directly to the backend.
C:\TMP> clang -mllvm --x86-asm-syntax=intel -c intel.s
Differentials Review: http://reviews.llvm.org/D22285
llvm-svn: 275877
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index af70017..6dfd004e 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -6460,6 +6460,20 @@ void ClangAs::AddMIPSTargetArgs(const ArgList &Args, CmdArgs.push_back(ABIName.data()); } +void ClangAs::AddX86TargetArgs(const ArgList &Args, + ArgStringList &CmdArgs) const { + 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; + } + } +} + void ClangAs::ConstructJob(Compilation &C, const JobAction &JA, const InputInfo &Output, const InputInfoList &Inputs, const ArgList &Args, @@ -6607,6 +6621,11 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA, case llvm::Triple::mips64el: AddMIPSTargetArgs(Args, CmdArgs); break; + + case llvm::Triple::x86: + case llvm::Triple::x86_64: + AddX86TargetArgs(Args, CmdArgs); + break; } // Consume all the warning flags. Usually this would be handled more |