This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/42893] [4.3/4.4/4.5 Regression] Missed conditionally dead store elimination
- From: "rguenther at suse dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 28 Jan 2010 09:46:37 -0000
- Subject: [Bug tree-optimization/42893] [4.3/4.4/4.5 Regression] Missed conditionally dead store elimination
- References: <bug-42893-280@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from rguenther at suse dot de 2010-01-28 09:46 -------
Subject: Re: New: [4.3/4.4/4.5 Regression]
Missed conditionally dead store elimination
On Thu, 28 Jan 2010, steven at gcc dot gnu dot org wrote:
> Taken from
> http://embed.cs.utah.edu/embarrassing/jan_10/harvest/source/8A/8AB0B238.shtml:
>
> struct frame_info;
> void tui_registers_changed_hook (void);
> extern struct frame_info *deprecated_selected_frame;
> int tui_refreshing_registers = 0;
> void
> tui_registers_changed_hook (void)
> {
> struct frame_info *fi;
>
> fi = deprecated_selected_frame;
> if (fi)
> {
> if (tui_refreshing_registers == 0)
> {
> tui_refreshing_registers = 1;
> tui_refreshing_registers = 0;
> }
> }
> return;
> }
We can only see that tui_refreshing_registers = 1 is dead in DSE.
DOM in theory could see the equivalency but I think it does not
track loads/stores properly enough. This needs predicated
value-numbering I think.
No idea why we caught this on RTL in 3.x but not now - that's for
you to answer ;) I suppose RTL jump threading might have caught it?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42893