This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/19464] [3.3/3.4/4.0 Regression] gcse causes poor register allocation
- From: "dberlin at dberlin dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 15 Jan 2005 21:44:41 -0000
- Subject: [Bug rtl-optimization/19464] [3.3/3.4/4.0 Regression] gcse causes poor register allocation
- References: <20050115205816.19464.belyshev@depni.sinp.msu.ru>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From dberlin at gcc dot gnu dot org 2005-01-15 21:44 -------
Subject: Re: New: [3.3/3.4/4.0 Regression]
gcse causes poor register allocation
> This is a regression and was introduced by this change:
I have a very hard time believing this, since the patch below only
touched store motion.
>
> 2001-07-16 Daniel Berlin <dan@cgsoftware.com>
>
> * gcse.c: Update comment at top.
> Update comment on mem handling.
> mem_last_set, mem_first_set, mem_set_in_block: gone.
> Declaration of reg_set_info: gone.
> (oprs_unchanged_p): Don't use mem_*set_* anymore. They are
> pointless with load_killed_in_block_p (they are *more*
> conservative then it, not less, and less accurate).
> (oprs_not_set_p): Ditto.
> (alloc_gcse_mem): Don't allocate mem_set_in_block
> (free_gcse_mem): Don't free it, either.
> (record_last_mem_set_info): Update comment in front, remove
> mem_*set_* stuff. Note the reason we don't handle stores directly
> here.
> (compute_hash_table): Update comments to reflect reality. Remove
> mem_*set_* references.
> (reset_opr_set_tables): Remove mem_*set_* references.
> (mark_call): Ditto.
> (mark_set): Ditto. Also remove double sets of bitmaps for REG's.
> (mark_clobber): Ditto (on both parts, we double set here too).
> (expr_killed_p): Remove mem_set_in_block test.
> (compute_transp): Remove mem_set_in_block test.
>
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19464