diff options
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/tree-ssa-operands.c | 10 |
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3d6a38c..8648e7c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-09-16 Diego Novillo <dnovillo@redhat.com> + + * tree-ssa-operands.c (add_call_clobber_ops): Make read-only + test apply only to TREE_STATIC and DECL_EXTERNAL. + 2004-09-16 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> * Makefile.in (tree-cfg.o): Add CFGLAYOUT_H dependency. diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 8daadc7..a007b50 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -1620,9 +1620,15 @@ add_call_clobber_ops (tree stmt, tree callee) with a module static or we may not. So we still must look anywhere else we can (such as the TREE_READONLY) to get better info. */ + /* If VAR is read-only, don't add a V_MAY_DEF, just a - VUSE operand. */ - else if (TREE_READONLY (var)) + VUSE operand. FIXME, this is quirky. TREE_READONLY + by itself is not enough here. We can only decide + that the call will not affect VAR if all these + conditions are met. One would think that + TREE_READONLY should be sufficient. */ + else if (TREE_READONLY (var) + && (TREE_STATIC (var) || DECL_EXTERNAL (var))) add_stmt_operand (&var, stmt, opf_none); else add_stmt_operand (&var, stmt, opf_is_def); |
