* except.h: Correct checks for when SJLJ exceptions must be used.
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 8 Jun 2008 19:06:49 +0000 (19:06 +0000)
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 8 Jun 2008 19:06:49 +0000 (19:06 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@136568 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/except.h

index 92496e5..1892d25 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 ba6f592..ae3264e 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