diff options
| author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-26 21:11:23 +0000 |
|---|---|---|
| committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-26 21:11:23 +0000 |
| commit | 7dd3724184cd6a9e911c4112d0942729405d0a5d (patch) | |
| tree | ec365de72a39a5ef2d0a252b8496e9199f69fb3d /gcc/expr.c | |
| parent | 6b87a81c933c4fc156e9ea1c79d5dad399caef1f (diff) | |
| download | ppe42-gcc-7dd3724184cd6a9e911c4112d0942729405d0a5d.tar.gz ppe42-gcc-7dd3724184cd6a9e911c4112d0942729405d0a5d.zip | |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83721 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expr.c')
| -rw-r--r-- | gcc/expr.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/expr.c b/gcc/expr.c index 259eac1c989..a92eab6f9d9 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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)) |

