This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[tuples] Fix find_func_aliases


Hi!

ADDR_EXPR is GIMPLE_SINGLE_RHS, so gimple_assign_rhs1 contains the
ADDR_EXPR tree.  Without this I'm getting
FAIL: gcc.c-torture/execute/20000706-4.c execution,  -O2
FAIL: gcc.c-torture/execute/20000706-4.c execution,  -Os
FAIL: gcc.c-torture/execute/20000706-5.c execution,  -O2
FAIL: gcc.c-torture/execute/20000706-5.c execution,  -Os
FAIL: gcc.c-torture/execute/20030828-1.c execution,  -O1
FAIL: gcc.c-torture/execute/20040823-1.c execution,  -O1
FAIL: gcc.c-torture/execute/20040823-1.c execution,  -O2
FAIL: gcc.c-torture/execute/20040823-1.c execution,  -Os
failures.  Full bootstrap/regtesting ongoing, ok if it passes?

2008-07-04  Jakub Jelinek  <jakub@redhat.com>

	* tree-ssa-structalias.c (find_func_aliases): Handle ADDR_EXPR
	as GIMPLE_SINGLE_RHS instead of GIMPLE_UNARY_RHS.

--- gcc/tree-ssa-structalias.c.jj	2008-07-02 19:04:29.000000000 +0200
+++ gcc/tree-ssa-structalias.c	2008-07-04 15:40:48.000000000 +0200
@@ -3783,12 +3783,12 @@ find_func_aliases (gimple origt)
       gcc_assert (is_gimple_assign (t));
       if (gimple_assign_rhs_code (t) == ADDR_EXPR)
 	{
-	  tree base = get_base_address (gimple_assign_rhs1 (t));
+	  tree rhs = gimple_assign_rhs1 (t);
+	  tree base = get_base_address (TREE_OPERAND (rhs, 0));
 	  if (base
 	      && (!DECL_P (base)
 		  || !is_global_var (base)))
-	    make_escape_constraint
-		(build_fold_addr_expr (gimple_assign_rhs1 (t)));
+	    make_escape_constraint (rhs);
 	}
       else if (get_gimple_rhs_class (gimple_assign_rhs_code (t))
 	       == GIMPLE_SINGLE_RHS)

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]