Author: sanwou01 Date: Mon Mar 27 10:34:52 2017 New Revision: 298850 URL: http://llvm.org/viewvc/llvm-project?rev=298850&view=rev Log: [ARM] Add a driver option for +no-neg-immediates
Reviewers: olista01, rengolin, javed.absar, samparker Reviewed By: samparker Subscribers: samparker, llvm-commits, aemerson Differential Revision: https://reviews.llvm.org/D31197 Added: cfe/trunk/test/Driver/arm-no-neg-immediates.c Modified: cfe/trunk/include/clang/Driver/Options.td cfe/trunk/lib/Driver/ToolChains/Arch/AArch64.cpp cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp Modified: cfe/trunk/include/clang/Driver/Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=298850&r1=298849&r2=298850&view=diff ============================================================================== --- cfe/trunk/include/clang/Driver/Options.td (original) +++ cfe/trunk/include/clang/Driver/Options.td Mon Mar 27 10:34:52 2017 @@ -1760,6 +1760,8 @@ def mcrc : Flag<["-"], "mcrc">, Group<m_ HelpText<"Allow use of CRC instructions (ARM only)">; def mnocrc : Flag<["-"], "mnocrc">, Group<m_arm_Features_Group>, HelpText<"Disallow use of CRC instructions (ARM only)">; +def mno_neg_immediates: Flag<["-"], "mno-neg-immediates">, Group<m_arm_Features_Group>, + HelpText<"Disallow converting instructions with negative immediates to their negation or inversion.">; def mgeneral_regs_only : Flag<["-"], "mgeneral-regs-only">, Group<m_aarch64_Features_Group>, HelpText<"Generate code which only uses the general purpose registers (AArch64 only)">; Modified: cfe/trunk/lib/Driver/ToolChains/Arch/AArch64.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Arch/AArch64.cpp?rev=298850&r1=298849&r2=298850&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Arch/AArch64.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Arch/AArch64.cpp Mon Mar 27 10:34:52 2017 @@ -193,4 +193,7 @@ void aarch64::getAArch64TargetFeatures(c if (Args.hasArg(options::OPT_ffixed_x18)) Features.push_back("+reserve-x18"); + + if (Args.hasArg(options::OPT_mno_neg_immediates)) + Features.push_back("+no-neg-immediates"); } Modified: cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp?rev=298850&r1=298849&r2=298850&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Arch/ARM.cpp Mon Mar 27 10:34:52 2017 @@ -449,6 +449,9 @@ void arm::getARMTargetFeatures(const Too // The kext linker doesn't know how to deal with movw/movt. if (KernelOrKext || Args.hasArg(options::OPT_mno_movt)) Features.push_back("+no-movt"); + + if (Args.hasArg(options::OPT_mno_neg_immediates)) + Features.push_back("+no-neg-immediates"); } const std::string arm::getARMArch(StringRef Arch, const llvm::Triple &Triple) { Added: cfe/trunk/test/Driver/arm-no-neg-immediates.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/arm-no-neg-immediates.c?rev=298850&view=auto ============================================================================== --- cfe/trunk/test/Driver/arm-no-neg-immediates.c (added) +++ cfe/trunk/test/Driver/arm-no-neg-immediates.c Mon Mar 27 10:34:52 2017 @@ -0,0 +1,8 @@ +// RUN: %clang -target arm-none-gnueabi -### %s 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT +// RUN: %clang -target arm-none-gnueabi -mno-neg-immediates -### %s 2>&1 | FileCheck %s + +// RUN: %clang -target aarch64-none-gnueabi -### %s 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT +// RUN: %clang -target aarch64-none-gnueabi -mno-neg-immediates -### %s 2>&1 | FileCheck %s + +// CHECK: "-target-feature" "+no-neg-immediates" +// CHECK-DEFAULT-NOT: "+no-neg-immediates" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits