re PR tree-optimization/21610 (ICE in make_decl_rtl)
PR tree-optimization/21610 * c-typeck.c (decl_constant_value_for_broken_optimization): If not returning DECL, call unshare_expr. * gcc.c-torture/compile/20050516-1.c: New test. From-SVN: r99815
This commit is contained in:
parent
22c3c0917f
commit
c477e13bd7
4 changed files with 31 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
|||
2005-05-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/21610
|
||||
* c-typeck.c (decl_constant_value_for_broken_optimization): If not
|
||||
returning DECL, call unshare_expr.
|
||||
|
||||
2005-05-17 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* config/cris/cris.md: Unquote preparation and output statements.
|
||||
|
|
|
@ -1249,10 +1249,18 @@ decl_constant_value (tree decl)
|
|||
static tree
|
||||
decl_constant_value_for_broken_optimization (tree decl)
|
||||
{
|
||||
tree ret;
|
||||
|
||||
if (pedantic || DECL_MODE (decl) == BLKmode)
|
||||
return decl;
|
||||
else
|
||||
return decl_constant_value (decl);
|
||||
|
||||
ret = decl_constant_value (decl);
|
||||
/* Avoid unwanted tree sharing between the initializer and current
|
||||
function's body where the tree can be modified e.g. by the
|
||||
gimplifier. */
|
||||
if (ret != decl && TREE_STATIC (decl))
|
||||
ret = unshare_expr (ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
2005-05-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/21610
|
||||
* gcc.c-torture/compile/20050516-1.c: New test.
|
||||
|
||||
PR fortran/15080
|
||||
* gfortran.fortran-torture/execute/forall_3.f90: Remove comment
|
||||
about the test failing.
|
||||
|
|
12
gcc/testsuite/gcc.c-torture/compile/20050516-1.c
Normal file
12
gcc/testsuite/gcc.c-torture/compile/20050516-1.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
/* PR tree-optimization/21610 */
|
||||
|
||||
struct S { char s; };
|
||||
struct T { struct S t; };
|
||||
|
||||
struct S *const p = &((struct T * const) (0x4000))->t;
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
p->s = 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue