tree-ssa-operands.c (get_expr_operands): Revert changes to ADDR_EXPR processing introduced by...

* tree-ssa-operands.c (get_expr_operands): Revert changes
	to ADDR_EXPR processing introduced by:
	    2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
	    * tree-ssa-operands.c (get_expr_operands): Minor rearrangements.

testsuite/ChangeLog

	* gcc.dg/tree-ssa/20040729-1.c: New test.

From-SVN: r85306
This commit is contained in:
Diego Novillo 2004-07-29 17:15:38 +00:00 committed by Diego Novillo
parent 9d6e0be1f6
commit d397dbcd99
4 changed files with 32 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2004-07-29 Diego Novillo <dnovillo@redhat.com>
* tree-ssa-operands.c (get_expr_operands): Revert changes
to ADDR_EXPR processing introduced by:
2004-06-21 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* tree-ssa-operands.c (get_expr_operands): Minor rearrangements.
2004-07-29 Joseph S. Myers <jsm@polyomino.org.uk>
* doc/implement-c.texi: Add C90 subclause references. Point to

View File

@ -1,3 +1,7 @@
2004-07-29 Diego Novillo <dnovillo@redhat.com>
* gcc.dg/tree-ssa/20040729-1.c: New test.
2004-07-27 Matt Austern <austern@apple.com>
* gcc.dg/darwin-bool-1.c: New test.

View File

@ -0,0 +1,18 @@
/* { dg-do compile } */
/* { dg-options "-O1 -fdump-tree-dce3" } */
foo ()
{
volatile int *p;
volatile int x;
p = &x;
*p = 3;
return *p + 1;
}
/* The assignment to 'p' is dead and should be removed. But the
compiler was mistakenly thinking that the statement had volatile
operands. But 'p' itself is not volatile and taking the address of
a volatile does not constitute a volatile operand. */
/* { dg-final { scan-tree-dump-times "&x" 0 "dce3"} } */

View File

@ -859,9 +859,9 @@ get_expr_operands (tree stmt, tree *expr_p, int flags, voperands_t prev_vops)
of interest to some passes (e.g. alias resolution). */
add_stmt_operand (expr_p, stmt, 0, NULL);
/* If the address is constant (invariant is not sufficient), there will
be no interesting variable references inside. */
if (TREE_CONSTANT (expr))
/* If the address is invariant, there may be no interesting variable
references inside. */
if (is_gimple_min_invariant (expr))
return;
/* There should be no VUSEs created, since the referenced objects are