Commit 98d784a9 by Andrew Pinski Committed by Andrew Pinski

optimize.c (calls_setjmp_r): Remove.

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
parent 4ccfc10a
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.
......
......@@ -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 */
......
......@@ -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
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment