This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[tree-ssa] Fix folding of *&VAR in get_expr_operands
- From: Diego Novillo <dnovillo at redhat dot com>
- To: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 25 Aug 2003 14:57:51 -0400
- Subject: [tree-ssa] Fix folding of *&VAR in get_expr_operands
- Organization: Red Hat Canada
Obvious, but nasty. We were creating shared operands when folding *&VAR
in get_expr_operands. Instead of creating an operand for the current
operand pointer, we were creating an operand with the address of the
&VAR expression we were folding.
Diego.
* tree-dfa.c (get_expr_operands): Don't create shared operands when
folding *&VAR expressions.
Index: tree-dfa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-dfa.c,v
retrieving revision 1.1.4.149
diff -d -u -p -d -c -p -r1.1.4.149 tree-dfa.c
*** tree-dfa.c 25 Aug 2003 02:44:23 -0000 1.1.4.149
--- tree-dfa.c 25 Aug 2003 18:40:24 -0000
*************** get_expr_operands (tree stmt, tree *expr
*** 366,372 ****
*expr_p = build (ARRAY_REF, TREE_TYPE (expr), var,
integer_zero_node);
! add_stmt_operand (&TREE_OPERAND (ptr, 0), stmt, flags, prev_vops);
return;
}
else if (TREE_CONSTANT (ptr))
--- 368,374 ----
*expr_p = build (ARRAY_REF, TREE_TYPE (expr), var,
integer_zero_node);
! add_stmt_operand (expr_p, stmt, flags, prev_vops);
return;
}
else if (TREE_CONSTANT (ptr))