diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2004-06-26 21:11:23 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2004-06-26 17:11:23 -0400 |
commit | 350fae6628af14c2e760694d39baec5f7858057c (patch) | |
tree | ec365de72a39a5ef2d0a252b8496e9199f69fb3d /gcc/expr.c | |
parent | 6573a10434b3aa2784f052d6ffc3905d8490464e (diff) | |
download | gcc-350fae6628af14c2e760694d39baec5f7858057c.zip gcc-350fae6628af14c2e760694d39baec5f7858057c.tar.gz gcc-350fae6628af14c2e760694d39baec5f7858057c.tar.bz2 |
c-common.c (c_safe_from_p, [...]): Deleted.
2004-06-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* c-common.c (c_safe_from_p, c_walk_subtrees): Deleted.
* c-common.def (DECL_STMT): Remove.
* c-common.h (DECL_STMT_DECL): Deleted.
(COMPOUNT_LITERAL_EXPR_DECL): Use DECL_EXPR_DECL.
(c_safe_from_p, c_walk_subtrees): Deleted.
* c-decl.c, c-parse.in, c-pretty-print.c: DECL_STMT now DECL_EXPR.
* c-dump.c (c_dump_tree, case DECL_STMT): Deleted.
* c-gimplify.c (gimplify_decl_stmt): Deleted.
(gimplify_compound_literal_expr): Use DECL_EXPR_DECL
and gimplify_and_add.
(c_gimplify_expr, case DECL_EXPR): New case.
(c_gimplify_expr, case DECL_STMT): Deleted.
* c-lang.c (LANG_HOOKS_SAFE_FROM_P): Likewise.
(LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
* expr.c (safe_from_p, case 's'): New case.
* gimplify.c (gimplify_decl_expr): New function.
(gimplify_expr, case DECL_EXPR): New case.
* tree-inline.c (walk_tree): Walk into all fields of a type and
decl only if they are in a DECL_EXPR.
(mark_local_for_remap_r): Minor code cleanup.
* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Add else.
* tree.c (has_cleanups, case DECL_EXPR): New case.
* tree.def (DECL_EXPR): New code.
* tree.h (DECL_EXPR_DECL): New macro.
* objc/objc-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.
From-SVN: r83721
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -6002,6 +6002,14 @@ safe_from_p (rtx x, tree exp, int top_p) else return 0; + case 's': + /* The only case we look at here is the DECL_INITIAL inside a + DECL_EXPR. */ + return (TREE_CODE (exp) != DECL_EXPR + || TREE_CODE (DECL_EXPR_DECL (exp)) != VAR_DECL + || !DECL_INITIAL (DECL_EXPR_DECL (exp)) + || safe_from_p (x, DECL_INITIAL (DECL_EXPR_DECL (exp)), 0)); + case '2': case '<': if (!safe_from_p (x, TREE_OPERAND (exp, 1), 0)) |