diff options
author | Daniil Suchkov <suc-daniil@yandex.ru> | 2020-01-21 12:21:53 +0700 |
---|---|---|
committer | Daniil Suchkov <suc-daniil@yandex.ru> | 2020-01-23 15:53:53 +0700 |
commit | 4a8dbc617d0b28ce2ce3e6856376b3802409554e (patch) | |
tree | d327853c2a6074acb123363c9814f1a3be84eee0 /llvm/lib/Transforms/Utils/SSAUpdater.cpp | |
parent | 8306f55bfa2b14ac4289c6f1d3ab5c4a64d37f6b (diff) | |
download | llvm-4a8dbc617d0b28ce2ce3e6856376b3802409554e.zip llvm-4a8dbc617d0b28ce2ce3e6856376b3802409554e.tar.gz llvm-4a8dbc617d0b28ce2ce3e6856376b3802409554e.tar.bz2 |
[SSAUpdater] Don't call ValueIsRAUWd upon single use replacement
It is incorrect to call ValueHandleBase::ValueIsRAUWd when only one use
is replaced since it simply violates semantics of the callback and leads
to bugs like PR44320.
Previously this call was used specifically to keep LICM's cache of
AliasSetTrackers up to date across passes (as PR36801 showed, even for
that purpose it didn't work properly), but since LICM doesn't have that
cache anymore, we can safely remove this incorrect call with no
repercussions.
This patch fixes https://bugs.llvm.org/show_bug.cgi?id=44320
Reviewers: asbirlea, fhahn, efriedma, reames
Reviewed-By: asbirlea
Differential Revision: https://reviews.llvm.org/D73089
Diffstat (limited to 'llvm/lib/Transforms/Utils/SSAUpdater.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/SSAUpdater.cpp | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/Utils/SSAUpdater.cpp b/llvm/lib/Transforms/Utils/SSAUpdater.cpp index bffdd11..36a17ce 100644 --- a/llvm/lib/Transforms/Utils/SSAUpdater.cpp +++ b/llvm/lib/Transforms/Utils/SSAUpdater.cpp @@ -195,11 +195,6 @@ void SSAUpdater::RewriteUse(Use &U) { else V = GetValueInMiddleOfBlock(User->getParent()); - // Notify that users of the existing value that it is being replaced. - Value *OldVal = U.get(); - if (OldVal != V && OldVal->hasValueHandle()) - ValueHandleBase::ValueIsRAUWd(OldVal, V); - U.set(V); } |