diff options
| author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-05-18 06:42:02 +0000 |
|---|---|---|
| committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-05-18 06:42:02 +0000 |
| commit | 6deb816c1c1b54cdea0cc040b6f4e8d3df7e6ec4 (patch) | |
| tree | 34c3ecff9106da1c51620517d710801207c8f3d2 | |
| parent | a52184538188f7bd831d978d24226d3fadef792f (diff) | |
| download | bcm5719-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.cpp | 5 | ||||
| -rw-r--r-- | clang/test/Driver/woa-restrict-it.c | 4 |
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" + |

