[PATCH] D152430: [DAG] Peek through freeze when deciding whether we should convert setcc to math or not.

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 9 08:12:55 PDT 2023


nikic added inline comments.


================
Comment at: llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:12251
   // =>
   //   FREEZE(SETCC(X, CONST, Cond))
   // This is correct if FREEZE(X) has one use and SETCC(FREEZE(X), CONST, Cond)
----------------
deadalnix wrote:
> deadalnix wrote:
> > RKSimon wrote:
> > > Is this fold the underlying problem? Every other freeze fold we have tries to push the freeze upward through the DAG, but this pulling it down?
> > I'm not sure it is the underlying problem, but it is indeed part of the loop.
> > 
> > The underlying problem is that we want to combine setcc to math, unless the setcc is used in a brcond. The math is turned back into a setcc by the brcond in that case, which created an infinite loop and this is why `PreferSetCC` was introduced in the first place.
> > 
> > As to pushing the freeze up or down, I don't really have an opinion on the matter.
> Reworded: the loop problem existed in the past and was fixed, but this transform defeated the previous fix in the presence of a freeze.
> 
> I do indeed think that there needs to be some thought put into how we want to handle freeze, as this doesn't look very solid to me.
Possible alternative: https://reviews.llvm.org/D152544


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D152430/new/

https://reviews.llvm.org/D152430



More information about the llvm-commits mailing list