aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorOliver Stannard <oliver.stannard@arm.com>2016-07-27 08:54:13 +0000
committerOliver Stannard <oliver.stannard@arm.com>2016-07-27 08:54:13 +0000
commit7921e833d559b253230ff093873f43530f6c43cc (patch)
tree088c8440924666f374e02b4e06ddcc8fc64719da /clang/lib/Driver/Tools.cpp
parentc8de8cffa1133241ee10e2f7f26ec72974f68eb7 (diff)
downloadllvm-7921e833d559b253230ff093873f43530f6c43cc.zip
llvm-7921e833d559b253230ff093873f43530f6c43cc.tar.gz
llvm-7921e833d559b253230ff093873f43530f6c43cc.tar.bz2
[ARM] Pass -mimplcit-it= to integrated assembler
Differential Revision: https://reviews.llvm.org/D22761 llvm-svn: 276851
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index e747149..bd306dd 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -2882,6 +2882,27 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
DefaultIncrementalLinkerCompatible))
CmdArgs.push_back("-mincremental-linker-compatible");
+ switch (C.getDefaultToolChain().getArch()) {
+ case llvm::Triple::arm:
+ case llvm::Triple::armeb:
+ case llvm::Triple::thumb:
+ case llvm::Triple::thumbeb:
+ if (Arg *A = Args.getLastArg(options::OPT_mimplicit_it_EQ)) {
+ StringRef Value = A->getValue();
+ if (Value == "always" || Value == "never" || Value == "arm" ||
+ Value == "thumb") {
+ CmdArgs.push_back("-mllvm");
+ CmdArgs.push_back(Args.MakeArgString("-arm-implicit-it=" + Value));
+ } else {
+ D.Diag(diag::err_drv_unsupported_option_argument)
+ << A->getOption().getName() << Value;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
// When passing -I arguments to the assembler we sometimes need to
// unconditionally take the next argument. For example, when parsing
// '-Wa,-I -Wa,foo' we need to accept the -Wa,foo arg after seeing the