Commit 46044dd9 by H.J. Lu

Nullify regno_allocno_map of the removed allocno.

gcc/

2010-05-10  H.J. Lu<hongjiu.lu@intel.com>
	    Vladimir Makarov<vmakarov@redhat.com>

	PR rtl-optimization/44012
	* ira-build.c (remove_unnecessary_allocnos): Nullify
	regno_allocno_map of the removed allocno.

gcc/testsuite/

2010-05-10  H.J. Lu  <hongjiu.lu@intel.com>

	PR rtl-optimization/44012
	* gcc.dg/pr44012.c: New.

From-SVN: r159223
parent 6aaf1357
2010-05-10 H.J. Lu<hongjiu.lu@intel.com>
Vladimir Makarov<vmakarov@redhat.com>
PR rtl-optimization/44012
* ira-build.c (remove_unnecessary_allocnos): Nullify
regno_allocno_map of the removed allocno.
2010-05-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* configure.ac (gcc_cv_ld_eh_gc_sections): Redirect objdump errors
......
......@@ -1978,6 +1978,10 @@ remove_unnecessary_allocnos (void)
merged_p = true;
ALLOCNO_LIVE_RANGES (a) = NULL;
propagate_some_info_from_allocno (parent_a, a);
/* Remove it from the corresponding regno allocno
map to avoid info propagation of subsequent
allocno into this already removed allocno. */
a_node->regno_allocno_map[regno] = NULL;
finish_allocno (a);
}
}
......
2010-05-10 H.J. Lu <hongjiu.lu@intel.com>
PR rtl-optimization/44012
* gcc.dg/pr44012.c: New.
2010-05-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* lib/lto.exp (lto_prune_vis_warns): Renamed to lto_prune_warns.
......
/* { dg-do compile } */
/* { dg-options "-O -fgcse" } */
extern void fe ();
extern int i;
static inline void
FX (void (*f) ())
{
fe ();
(*f) ();
}
static inline void
f4 ()
{
for (;;)
switch (i)
{
case 306:
FX (&fe);
break;
default:
return;
}
}
static inline void
f3 ()
{
f4 ();
for (;;)
switch (i)
{
case 267:
FX (&f4);
break;
default:
return;
}
}
static inline void
f2 ()
{
f3 ();
while (i)
FX (&f3);
}
void
f1 ()
{
f2 ();
while (1)
FX (&f2);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment