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