re PR tree-optimization/47265 (Error: SSA name in freelist but still referenced)

PR tree-optimization/47265
	PR tree-optimization/47443
	* tree-ssa-forwprop.c (forward_propagate_addr_expr): Return false
	if name still has some uses.

	* gcc.c-torture/compile/pr47265.c: New test.
	* gcc.dg/pr47443.c: New test.

From-SVN: r169250
This commit is contained in:
Jakub Jelinek 2011-01-25 20:50:56 +01:00 committed by Jakub Jelinek
parent 6be7b6686f
commit 6bdfdb96ee
5 changed files with 50 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2011-01-25 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/47265
PR tree-optimization/47443
* tree-ssa-forwprop.c (forward_propagate_addr_expr): Return false
if name still has some uses.
2011-01-25 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/47382

View File

@ -1,3 +1,10 @@
2011-01-25 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/47265
PR tree-optimization/47443
* gcc.c-torture/compile/pr47265.c: New test.
* gcc.dg/pr47443.c: New test.
2011-01-25 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/47382

View File

@ -0,0 +1,20 @@
/* PR tree-optimization/47265 */
struct S
{
char a[3];
char b[3];
};
void
bar (char *dst, const char *src, unsigned n)
{
while (n--)
*dst++ = *src ? *src++ : ' ';
}
void
foo (struct S *s)
{
bar (s->a, s->b, 3);
}

View File

@ -0,0 +1,14 @@
/* PR tree-optimization/47443 */
/* { dg-do compile } */
/* { dg-options "-O -fstack-check=generic" } */
static inline bar (char *c, int i)
{
return c + i > c;
}
int foo ()
{
char c[100];
return (bar (c, 1));
}

View File

@ -1,5 +1,5 @@
/* Forward propagation of expressions for single use variables.
Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010
Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
@ -1114,7 +1114,7 @@ forward_propagate_addr_expr (tree name, tree rhs)
}
}
return all;
return all && has_zero_uses (name);
}
/* Forward propagate the comparison defined in STMT like