diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ipa-pure-const.c | 3 | ||||
-rw-r--r-- | gcc/ipa-type-escape.c | 6 |
3 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 83440dd..b7bae1a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2006-12-30 Jan Hubicka <jh@suse.cz> + * ipa-pure-const.c (check_operand): SSA_NAME is safe. + * ipa-type-escape.c (scan_for_refs): Look into SSA_NAMEs. + +2006-12-30 Jan Hubicka <jh@suse.cz> + * tree.h (DECL_CALL_CLOBBERED): Remove. (tree_decl_common): Remove call_clobbered flag. * tree-flow.h (struct var_ann_d): Add call_clobbered flag. diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index bd1d72b..5f19af8 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -163,7 +163,8 @@ check_operand (funct_state local, static void check_tree (funct_state local, tree t, bool checking_write) { - if ((TREE_CODE (t) == EXC_PTR_EXPR) || (TREE_CODE (t) == FILTER_EXPR)) + if ((TREE_CODE (t) == EXC_PTR_EXPR) || (TREE_CODE (t) == FILTER_EXPR) + || TREE_CODE (t) == SSA_NAME) return; /* Any tree which is volatile disqualifies thie function from being diff --git a/gcc/ipa-type-escape.c b/gcc/ipa-type-escape.c index a7749f4..7b2fac1 100644 --- a/gcc/ipa-type-escape.c +++ b/gcc/ipa-type-escape.c @@ -1267,7 +1267,11 @@ scan_for_refs (tree *tp, int *walk_subtrees, void *data) result so we do mark the resulting cast as being bad. */ if (check_call (rhs)) - bitmap_set_bit (results_of_malloc, DECL_UID (lhs)); + { + if (TREE_CODE (lhs) == SSA_NAME) + lhs = SSA_NAME_VAR (lhs); + bitmap_set_bit (results_of_malloc, DECL_UID (lhs)); + } break; default: break; |