Author: olista01 Date: Wed Jul 27 03:54:13 2016 New Revision: 276851 URL: http://llvm.org/viewvc/llvm-project?rev=276851&view=rev Log: [ARM] Pass -mimplcit-it= to integrated assembler
Differential Revision: https://reviews.llvm.org/D22761 Added: cfe/trunk/test/Driver/arm-implicit-it.s Modified: cfe/trunk/include/clang/Driver/Options.td cfe/trunk/lib/Driver/Tools.cpp Modified: cfe/trunk/include/clang/Driver/Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=276851&r1=276850&r2=276851&view=diff ============================================================================== --- cfe/trunk/include/clang/Driver/Options.td (original) +++ cfe/trunk/include/clang/Driver/Options.td Wed Jul 27 03:54:13 2016 @@ -1377,6 +1377,7 @@ def mwatchsimulator_version_min_EQ : Joi 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]>; Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=276851&r1=276850&r2=276851&view=diff ============================================================================== --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Wed Jul 27 03:54:13 2016 @@ -2882,6 +2882,27 @@ static void CollectArgsForIntegratedAsse 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 Added: cfe/trunk/test/Driver/arm-implicit-it.s URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/arm-implicit-it.s?rev=276851&view=auto ============================================================================== --- cfe/trunk/test/Driver/arm-implicit-it.s (added) +++ cfe/trunk/test/Driver/arm-implicit-it.s Wed Jul 27 03:54:13 2016 @@ -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=' _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits