aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorYunzhong Gao <Yunzhong.Gao@sony.com>2016-07-18 18:44:51 +0000
committerYunzhong Gao <Yunzhong.Gao@sony.com>2016-07-18 18:44:51 +0000
commitfc611138eb9718d267cac07a4b786b55a6d11f77 (patch)
tree272971b4ea8d3d89db14a725c3205989cd16bd1f /clang/lib/Driver/Tools.cpp
parenta68b8df3a75d4b73bfffd8a91b28b89f9304e73b (diff)
downloadllvm-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.cpp19
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