mirror of https://github.com/microsoft/clang.git
[ARM] Pass -mimplcit-it= to integrated assembler
Differential Revision: https://reviews.llvm.org/D22761 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@276851 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
781609faeb
commit
4368b2f937
|
@ -1377,6 +1377,7 @@ def mwatchsimulator_version_min_EQ : Joined<["-"], "mwatchsimulator-version-min=
|
|||
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 mimplicit_it_EQ : Joined<["-"], "mimplicit-it=">, Group<m_Group>;
|
||||
def mconstant_cfstrings : Flag<["-"], "mconstant-cfstrings">, Group<clang_ignored_m_Group>;
|
||||
def mconsole : Joined<["-"], "mconsole">, Group<m_Group>, Flags<[DriverOption]>;
|
||||
def mwindows : Joined<["-"], "mwindows">, Group<m_Group>, Flags<[DriverOption]>;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
// RUN: %clang -target armv7--none-eabi -### %s 2>&1 \
|
||||
// RUN: | FileCheck %s -check-prefix CHECK-DEFAULT
|
||||
|
||||
// RUN: %clang -target armv7--none-eabi -mimplicit-it=arm -### %s 2>&1 \
|
||||
// RUN: | FileCheck %s -check-prefix CHECK-ARM
|
||||
|
||||
// RUN: %clang -target armv7--none-eabi -mimplicit-it=thumb -### %s 2>&1 \
|
||||
// RUN: | FileCheck %s -check-prefix CHECK-THUMB
|
||||
|
||||
// RUN: %clang -target armv7--none-eabi -mimplicit-it=never -### %s 2>&1 \
|
||||
// RUN: | FileCheck %s -check-prefix CHECK-NEVER
|
||||
|
||||
// RUN: %clang -target armv7--none-eabi -mimplicit-it=always -### %s 2>&1 \
|
||||
// RUN: | FileCheck %s -check-prefix CHECK-ALWAYS
|
||||
|
||||
// RUN: %clang -target armv7--none-eabi -mimplicit-it=thisisnotavalidoption -### %s 2>&1 \
|
||||
// RUN: | FileCheck %s -check-prefix CHECK-INVALID
|
||||
|
||||
// CHECK-DEFAULT-NOT: "-arm-implicit-it
|
||||
// CHECK-ARM: "-arm-implicit-it=arm"
|
||||
// CHECK-THUMB: "-arm-implicit-it=thumb"
|
||||
// CHECK-NEVER: "-arm-implicit-it=never"
|
||||
// CHECK-ALWAYS: "-arm-implicit-it=always"
|
||||
// CHECK-INVALID: error: unsupported argument 'thisisnotavalidoption' to option 'mimplicit-it='
|
Loading…
Reference in New Issue