This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/32758] [4.3 Regression] ecj1 hangs
- From: "paolo dot bonzini at lu dot unisi dot ch" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 29 Aug 2007 12:15:48 -0000
- Subject: [Bug middle-end/32758] [4.3 Regression] ecj1 hangs
- References: <bug-32758-10129@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #24 from paolo dot bonzini at lu dot unisi dot ch 2007-08-29 12:15 -------
Subject: Re: [4.3 Regression] ecj1 hangs
> Here is what I will try to regtest (already verified it fixes the testcase).
This is wrong, because local_live changes during execution of
dce_process_block. The {eh,regular}_block_artificial_uses must always
be set (they are live throughout, not just at the bottom of the basic
block).
> Alternatively, artificial_live could be a pointer bitmap which would just
> point to one of the &df->*_block_artificial_uses bitmap, though not sure
> if that ever could or in some register that wasn't originally set in
> local_live.
Much better, and would have the same effect as dce_simulate_fixup_sets.
> Certainly calling df_has_eh_preds just once per bb rather than per insn is IMHO
> worthwhile.
A patch to do so if preapproved if you add a comment saying
/* Calling df_simulate_fixup_sets has the disadvantage of calling
df_has_eh_preds once per insn, so we cache the information here. */
before the place where you set artificial_live.
Thanks!
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32758