[PATCH] D153151: [EarlyCSE] Do not CSE convergent readnone calls

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 17 00:46:53 PDT 2023


nikic added inline comments.


================
Comment at: llvm/lib/Transforms/Scalar/EarlyCSE.cpp:144
+             !CI->getFunction()->isPresplitCoroutine() &&
+             !CI->isConvergent();
     }
----------------
arsenm wrote:
> foad wrote:
> > arsenm wrote:
> > > Maybe should be checking nosync instead?
> > How is that related?
> The comment here and special case of coroutines seems like it was hacking around the general check of nosync. In a roundabout way checking nosync is the same as convergent. IIRC the interaction between them is no-convergent + memory(none) implies nosync
The coroutine check has no relation to nosync. It's hacking around a weakness in memory effect modelling that is unrelated to synchronization.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D153151



More information about the llvm-commits mailing list