aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ipa-prop.c10
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7c380d3..839ffc6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2010-12-09 Martin Jambor <mjambor@suse.cz>
+ * ipa-prop.c (compute_complex_ancestor_jump_func): Work also if the
+ zero is the first phi parameter.
+
+2010-12-09 Martin Jambor <mjambor@suse.cz>
+
* ipa-prop.h (struct ipa_parm_adjustment): New field alias_ptr_type.
* ipa-prop.c (ipa_modify_call_arguments): Use it.
* tree-sra.c (splice_param_accesses): Test that all accesses have the
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 0e5a4b1..af5b261 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -460,11 +460,15 @@ compute_complex_ancestor_jump_func (struct ipa_node_params *info,
tree tmp, parm, expr;
int index, i;
- if (gimple_phi_num_args (phi) != 2
- || !integer_zerop (PHI_ARG_DEF (phi, 1)))
+ if (gimple_phi_num_args (phi) != 2)
return;
- tmp = PHI_ARG_DEF (phi, 0);
+ if (integer_zerop (PHI_ARG_DEF (phi, 1)))
+ tmp = PHI_ARG_DEF (phi, 0);
+ else if (integer_zerop (PHI_ARG_DEF (phi, 0)))
+ tmp = PHI_ARG_DEF (phi, 1);
+ else
+ return;
if (TREE_CODE (tmp) != SSA_NAME
|| SSA_NAME_IS_DEFAULT_DEF (tmp)
|| !POINTER_TYPE_P (TREE_TYPE (tmp))