optimize.c (calls_setjmp_r): Remove.
authorAndrew Pinski <pinskia@physics.uc.edu>
Thu, 20 May 2004 11:36:14 +0000 (11:36 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Thu, 20 May 2004 11:36:14 +0000 (04:36 -0700)
2005-05-20  Andrew Pinski  <pinskia@physics.uc.edu>

        * optimize.c (calls_setjmp_r): Remove.
        (calls_setjmp_p): Remove.
        * cp-tree.c (calls_setjmp_p): Remove.
        * decl.c (finish_function): Do not call calls_setjmp_p.

From-SVN: r82049

gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/optimize.c

index 89c1922c5a4ad1ea69f649eee18f3a34302fbafc..e4836fdc6502a771281b622a006ec9a7b11ee528 100644 (file)
@@ -1,3 +1,10 @@
+2005-05-20  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * optimize.c (calls_setjmp_r): Remove.
+       (calls_setjmp_p): Remove.
+       * cp-tree.c (calls_setjmp_p): Remove.
+       * decl.c (finish_function): Do not call calls_setjmp_p.
+
 2004-05-18  Zack Weinberg  <zack@codesourcery.com>
 
        * decl.c (cp_finish_decl): Use mark_decl_referenced.
index 7efe55d806121edba7c4469afd783636dbaeecbc..9fc83d56bce7c8e78b0e20cb9335037418acc4c1 100644 (file)
@@ -3851,7 +3851,6 @@ extern tree implicitly_declare_fn (special_function_kind, tree, bool);
 extern tree skip_artificial_parms_for (tree, tree);
 
 /* In optimize.c */
-extern bool calls_setjmp_p (tree);
 extern bool maybe_clone_body (tree);
 
 /* in pt.c */
index 6407aedf22834b188edc807833444b5a500939d8..fe04827808e51b6e13a476c2331864c4e41e0f0c 100644 (file)
@@ -10756,18 +10756,6 @@ finish_function (int flags)
   if (!processing_template_decl)
     save_function_data (fndecl);
 
-  /* If this function calls `setjmp' it cannot be inlined.  When
-     `longjmp' is called it is not guaranteed to restore the value of
-     local variables that have been modified since the call to
-     `setjmp'.  So, if were to inline this function into some caller
-     `c', then when we `longjmp', we might not restore all variables
-     in `c'.  (It might seem, at first blush, that there's no way for
-     this function to modify local variables in `c', but their
-     addresses may have been stored somewhere accessible to this
-     function.)  */
-  if (!processing_template_decl && calls_setjmp_p (fndecl))
-    DECL_UNINLINABLE (fndecl) = 1;
-
   /* Complain if there's just no return statement.  */
   if (warn_return_type
       && TREE_CODE (TREE_TYPE (fntype)) != VOID_TYPE
index 7f45ae9123c055556e015f7583f96da9850f0a81..5102f576bbe11f041b087f4bae7c13de52abb24e 100644 (file)
@@ -44,35 +44,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
 /* Prototypes.  */
 
-static tree calls_setjmp_r (tree *, int *, void *);
 static void update_cloned_parm (tree, tree);
 
-/* Called from calls_setjmp_p via walk_tree.  */
-
-static tree
-calls_setjmp_r (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED,
-                void *data ATTRIBUTE_UNUSED)
-{
-  /* We're only interested in FUNCTION_DECLS.  */
-  if (TREE_CODE (*tp) != FUNCTION_DECL)
-    return NULL_TREE;
-
-  return setjmp_call_p (*tp) ? *tp : NULL_TREE;
-}
-
-/* Returns nonzero if FN calls `setjmp' or some other function that
-   can return more than once.  This function is conservative; it may
-   occasionally return a nonzero value even when FN does not actually
-   call `setjmp'.  */
-
-bool
-calls_setjmp_p (tree fn)
-{
-  return walk_tree_without_duplicates (&DECL_SAVED_TREE (fn),
-                                      calls_setjmp_r,
-                                      NULL) != NULL_TREE;
-}
-
 /* CLONED_PARM is a copy of CLONE, generated for a cloned constructor
    or destructor.  Update it to ensure that the source-position for
    the cloned parameter matches that for the original, and that the