[JumpThreading] Dont RAUW condition incorrectly
authorAnna Thomas <anna@azul.com>
Thu, 18 May 2017 13:12:18 +0000 (13:12 +0000)
committerAnna Thomas <anna@azul.com>
Thu, 18 May 2017 13:12:18 +0000 (13:12 +0000)
commit7bca59152adcc521f97a4e13128b214198e6d6df
tree090d5f026cf716e3f7da03c9bb2a1273f772252f
parenta24a3a30d00a43a5aa7e6cdf7b7046438735347c
[JumpThreading] Dont RAUW condition incorrectly

Summary:
We have a bug when RAUWing the condition if experimental.guard or assumes is a use of that
condition. This is because LazyValueInfo may have used the guards/assumes to identify the
value of the condition at the end of the block. RAUW replaces the uses
at the guard/assume as well as uses before the guard/assume. Both of
these are incorrect.
For now, disable RAUW for conditions and fix the logic as a next
step: https://reviews.llvm.org/D33257

Reviewers: sanjoy, reames, trentxintong

Subscribers: llvm-commits

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

llvm-svn: 303349
llvm/lib/Transforms/Scalar/JumpThreading.cpp
llvm/test/Transforms/JumpThreading/assume.ll
llvm/test/Transforms/JumpThreading/fold-not-thread.ll
llvm/test/Transforms/JumpThreading/guards.ll