From add5d9980add8cddbfb8079a800e11b1ec640761 Mon Sep 17 00:00:00 2001 From: Martin Jambor Date: Fri, 9 Apr 2010 22:24:11 +0200 Subject: [PATCH] ipa-cp.c (ipcp_lats_are_equal): Return true also if the two lattices are addresses of CONST_DECLs with the same... 2010-04-09 Martin Jambor * ipa-cp.c (ipcp_lats_are_equal): Return true also if the two lattices are addresses of CONST_DECLs with the same initial value. (ipcp_print_all_lattices): Print values of CONST_DECLs. * ipa-prop.c (ipa_print_node_jump_functions): Likewise. From-SVN: r158176 --- gcc/ChangeLog | 7 +++++++ gcc/ipa-cp.c | 22 +++++++++++++++++----- gcc/ipa-prop.c | 7 +++++++ 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dd63a97edd2e..1c57d045fb11 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-04-09 Martin Jambor + + * ipa-cp.c (ipcp_lats_are_equal): Return true also if the two + lattices are addresses of CONST_DECLs with the same initial value. + (ipcp_print_all_lattices): Print values of CONST_DECLs. + * ipa-prop.c (ipa_print_node_jump_functions): Likewise. + 2010-04-09 Eric Botcazou Bernd Schmidt diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index ce5051fe2421..527c0c42530b 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -227,10 +227,14 @@ ipcp_lats_are_equal (struct ipcp_lattice *lat1, struct ipcp_lattice *lat2) if (lat1->type != lat2->type) return false; - if (operand_equal_p (lat1->constant, lat2->constant, 0)) - return true; - - return false; + if (TREE_CODE (lat1->constant) == ADDR_EXPR + && TREE_CODE (lat2->constant) == ADDR_EXPR + && TREE_CODE (TREE_OPERAND (lat1->constant, 0)) == CONST_DECL + && TREE_CODE (TREE_OPERAND (lat2->constant, 0)) == CONST_DECL) + return operand_equal_p (DECL_INITIAL (TREE_OPERAND (lat1->constant, 0)), + DECL_INITIAL (TREE_OPERAND (lat2->constant, 0)), 0); + else + return operand_equal_p (lat1->constant, lat2->constant, 0); } /* Compute Meet arithmetics: @@ -386,8 +390,16 @@ ipcp_print_all_lattices (FILE * f) fprintf (f, " param [%d]: ", i); if (lat->type == IPA_CONST_VALUE) { + tree cst = lat->constant; fprintf (f, "type is CONST "); - print_generic_expr (f, lat->constant, 0); + print_generic_expr (f, cst, 0); + if (TREE_CODE (cst) == ADDR_EXPR + && TREE_CODE (TREE_OPERAND (cst, 0)) == CONST_DECL) + { + fprintf (f, " -> "); + print_generic_expr (f, DECL_INITIAL (TREE_OPERAND (cst, 0)), + 0); + } fprintf (f, "\n"); } else if (lat->type == IPA_TOP) diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 82a78a3b60e9..c6d58b1d4526 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -291,6 +291,13 @@ ipa_print_node_jump_functions (FILE *f, struct cgraph_node *node) tree val = jump_func->value.constant; fprintf (f, "CONST: "); print_generic_expr (f, val, 0); + if (TREE_CODE (val) == ADDR_EXPR + && TREE_CODE (TREE_OPERAND (val, 0)) == CONST_DECL) + { + fprintf (f, " -> "); + print_generic_expr (f, DECL_INITIAL (TREE_OPERAND (val, 0)), + 0); + } fprintf (f, "\n"); } else if (type == IPA_JF_CONST_MEMBER_PTR) -- 2.47.2