* except.h: Correct checks for when SJLJ exceptions must be used.
authorNathan Sidwell <nathan@codesourcery.com>
Sun, 8 Jun 2008 19:06:49 +0000 (19:06 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Sun, 8 Jun 2008 19:06:49 +0000 (19:06 +0000)
From-SVN: r136568

gcc/ChangeLog
gcc/except.h

index 92496e56ee3507ca509b66ecca5825a3d22febf3..1892d25562aca6cf5d9cc8daaf1f89a9c3c6afe4 100644 (file)
@@ -1,3 +1,7 @@
+2008-06-08  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * except.h: Correct checks for when SJLJ exceptions must be used.
+
 2008-06-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
 
        * doc/invoke.texi (Wenum-compare): Mention that it is enabled by
index ba6f5929dd2da08a9df40fef4922e5a57a78fac5..ae3264e6f3efba560a8746be2ebf47183ab2fa6e 100644 (file)
@@ -135,14 +135,14 @@ extern tree (*lang_eh_runtime_type) (tree);
    has appropriate support.  */
 
 #ifndef MUST_USE_SJLJ_EXCEPTIONS
-# if !(defined (EH_RETURN_DATA_REGNO)                  \
+# if defined (EH_RETURN_DATA_REGNO)                    \
        && (defined (TARGET_UNWIND_INFO)                        \
           || (DWARF2_UNWIND_INFO                       \
               && (defined (EH_RETURN_HANDLER_RTX)      \
-                  || defined (HAVE_eh_return)))))
-#  define MUST_USE_SJLJ_EXCEPTIONS     1
-# else
+                  || defined (HAVE_eh_return))))
 #  define MUST_USE_SJLJ_EXCEPTIONS     0
+# else
+#  define MUST_USE_SJLJ_EXCEPTIONS     1
 # endif
 #endif
 
@@ -152,14 +152,21 @@ extern tree (*lang_eh_runtime_type) (tree);
 # endif
 # if CONFIG_SJLJ_EXCEPTIONS == 0
 #  define USING_SJLJ_EXCEPTIONS                0
-#  ifndef EH_RETURN_DATA_REGNO
+#  if !defined(EH_RETURN_DATA_REGNO)
     #error "EH_RETURN_DATA_REGNO required"
 #  endif
-#  if !defined(EH_RETURN_HANDLER_RTX) && !defined(HAVE_eh_return)
+#  if ! (defined(TARGET_UNWIND_INFO) || DWARF2_UNWIND_INFO)
+    #error "{DWARF2,TARGET}_UNWIND_INFO required"
+#  endif
+#  if !defined(TARGET_UNWIND_INFO) \
+       && !(defined(EH_RETURN_HANDLER_RTX) || defined(HAVE_eh_return))
     #error "EH_RETURN_HANDLER_RTX or eh_return required"
 #  endif
-#  if !defined(DWARF2_UNWIND_INFO) && !defined(TARGET_UNWIND_INFO)
-    #error "{DWARF2,TARGET}_UNWIND_INFO required"
+/* Usually the above error checks will have already triggered an
+   error, but backends may set MUST_USE_SJLJ_EXCEPTIONS for their own
+   reasons.  */
+#  if MUST_USE_SJLJ_EXCEPTIONS
+    #error "Must use SJLJ exceptions but configured not to"
 #  endif
 # endif
 #else