aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ipa-pure-const.c3
-rw-r--r--gcc/ipa-type-escape.c6
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;