This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Patch ping ^ 2


Hello,

> > this patch fixes (at least) two several serious problems in lim store
> > motion -- misscompilations (PR 17133 and several duplicates) and
> > problems with compile time (PR 17790).
> > 
> > http://gcc.gnu.org/ml/gcc-patches/2004-09/msg01120.html
> 
> I still have serious problems with this patch.
> It simply drops using the SSA form to do store motion, and relies on
> variable names and lack of aliasing to decide what to move.  
> This is a serious pessimization from what we have now, which is only
> broken because you move things past must-defs that kill them, and
> because you don't verify that you aren't doing bad things with global
> variables (you need to do an is_global_var check, and a check like dce
> does for stores to global variables, and then do the additional checks,
> like reverse reachability from the exit node, to make sure you aren't
> making the store invisible to outside users).
> 
> If this patch is approved, I'll likely rewrite store motion as part of
> the sinking work i'm doing so that it works on SSA form again.

I think you are wrong.  The rewrite has exactly the same functionality
as the current code, and should give exactly the same results.

My opinion currently is that using SSA form for virtual operands is not the
best choice for this kind of optimization, the reasons being:

1) It does not really bring any advantages over conventional approaches.
2) It is slower than conventional approaches.
3) It is more complicated and harder to understand than conventional
   approaches.

Zdenek


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]