diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bc65db863676cc3cdf1444368e2f14a9c870485c..ff5462f26a7f9053fc7356cc3e0373f4254172c2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-19  Paul Brook  <paul@codesourcery.com>
+
+	* gcc/config/arm/arm.c (arm_compute_func_type): Treat all functions
+	as nothrow when unwinding tables are disabled.
+
 2006-01-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
 	PR testsuite/25171
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index e5309e046dddee03692dfce26b6c2b934dd31ee2..23f64aee38ba9839b203a88f317a9a15bb37a3c1 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -1413,7 +1413,9 @@ arm_compute_func_type (void)
      register values that will never be needed again.  This optimization
      was added to speed up context switching in a kernel application.  */
   if (optimize > 0
-      && TREE_NOTHROW (current_function_decl)
+      && (TREE_NOTHROW (current_function_decl)
+          || !(flag_unwind_tables
+               || (flag_exceptions && !USING_SJLJ_EXCEPTIONS)))
       && TREE_THIS_VOLATILE (current_function_decl))
     type |= ARM_FT_VOLATILE;