[all-commits] [llvm/llvm-project] c4d8c6: [LCSSA] Don't use VH callbacks to invalidate SCEV ...

Daniil Suchkov via All-commits all-commits at lists.llvm.org
Thu Dec 5 22:43:02 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: c4d8c6319f576a7540017168db2f0440691914f4
      https://github.com/llvm/llvm-project/commit/c4d8c6319f576a7540017168db2f0440691914f4
  Author: Daniil Suchkov <suc-daniil at yandex.ru>
  Date:   2019-12-06 (Fri, 06 Dec 2019)

  Changed paths:
    M llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
    M llvm/lib/Transforms/Utils/LCSSA.cpp
    A llvm/test/Transforms/LCSSA/pr44058.ll

  Log Message:
  -----------
  [LCSSA] Don't use VH callbacks to invalidate SCEV when creating LCSSA phis

In general ValueHandleBase::ValueIsRAUWd shouldn't be called when not
all uses of the value were actually replaced, though, currently
formLCSSAForInstructions calls it when it inserts LCSSA-phis.

Calls of ValueHandleBase::ValueIsRAUWd were added to LCSSA specifically
to update/invalidate SCEV. In the best case these calls duplicate some
of the work already done by SE->forgetValue, though in case when SCEV of
the value is SCEVUnknown, SCEV replaces the underlying value of
SCEVUnknown with the new value (i.e. acts like LCSSA-phi actually fully
replaces the value it is created for), which leads to SCEV being
corrupted because LCSSA-phi rarely dominates all uses of its inputs.

Fixes bug https://bugs.llvm.org/show_bug.cgi?id=44058.

Reviewers: fhahn, efriedma, reames, sanjoy.google

Reviewed By: fhahn

Subscribers: hiraditya, javed.absar, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D70593




More information about the All-commits mailing list