summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2014-05-18 06:42:02 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2014-05-18 06:42:02 +0000
commit6deb816c1c1b54cdea0cc040b6f4e8d3df7e6ec4 (patch)
tree34c3ecff9106da1c51620517d710801207c8f3d2
parenta52184538188f7bd831d978d24226d3fadef792f (diff)
downloadbcm5719-llvm-6deb816c1c1b54cdea0cc040b6f4e8d3df7e6ec4.tar.gz
bcm5719-llvm-6deb816c1c1b54cdea0cc040b6f4e8d3df7e6ec4.zip
Driver: force restricted IT blocks for Windows on ARM
Windows on ARM expects ARMv8 (restricted IT) conditional instructions only. Force enable the restricted IT mode via the backend option when targeting WoA. llvm-svn: 209086
-rw-r--r--clang/lib/Driver/Tools.cpp5
-rw-r--r--clang/test/Driver/woa-restrict-it.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index b0425cbe08a..7862ffb446e 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -3451,6 +3451,11 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("-backend-option");
CmdArgs.push_back("-arm-no-restrict-it");
}
+ } else if (TT.isOSWindows() && (TT.getArch() == llvm::Triple::arm ||
+ TT.getArch() == llvm::Triple::thumb)) {
+ // Windows on ARM expects restricted IT blocks
+ CmdArgs.push_back("-backend-option");
+ CmdArgs.push_back("-arm-restrict-it");
}
// Forward -f options with positive and negative forms; we translate
diff --git a/clang/test/Driver/woa-restrict-it.c b/clang/test/Driver/woa-restrict-it.c
new file mode 100644
index 00000000000..c046991ae13
--- /dev/null
+++ b/clang/test/Driver/woa-restrict-it.c
@@ -0,0 +1,4 @@
+// RUN: %clang -target armv7-windows -### %s 2>&1 | FileCheck %s
+
+// CHECK: "-backend-option" "-arm-restrict-it"
+
OpenPOWER on IntegriCloud