------- 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

Reply via email to