aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Driver/Tools.cpp6
-rw-r--r--clang/test/Driver/arm-no-exception.c4
2 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 0be232f..9577aaa 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -830,6 +830,12 @@ void Clang::AddARMTargetArgs(const ArgList &Args,
CmdArgs.push_back("-backend-option");
CmdArgs.push_back("-arm-reserve-r9");
}
+
+ // Exception handling
+ if (Args.hasArg(options::OPT_fno_exceptions)) {
+ CmdArgs.push_back("-backend-option");
+ CmdArgs.push_back("-arm-disable-ehabi");
+ }
}
// Get CPU and ABI names. They are not independent
diff --git a/clang/test/Driver/arm-no-exception.c b/clang/test/Driver/arm-no-exception.c
new file mode 100644
index 0000000..6c6036e
--- /dev/null
+++ b/clang/test/Driver/arm-no-exception.c
@@ -0,0 +1,4 @@
+// RUN: %clang -target arm-none-gnueeabi -fno-exceptions -### %s 2> %t
+// RUN: FileCheck --check-prefix=CHECK-NOEH < %t %s
+
+// CHECK-NOEH: "-backend-option" "-arm-disable-ehabi"