Fix a somewhat subtle pair of issues with JumpThreading I introduced in
authorChandler Carruth <chandlerc@gmail.com>
Mon, 20 Oct 2014 05:34:36 +0000 (05:34 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 20 Oct 2014 05:34:36 +0000 (05:34 +0000)
commit080dfb5bda983d7f8e6a95658292306761bdafa1
tree643474ba2e1fbebcbfdfc28755fe4568c0277bd7
parent96fc0d298c2ae67f8d68de6ffcf068f2c7162346
Fix a somewhat subtle pair of issues with JumpThreading I introduced in
r220178. First, the creation routine doesn't insert prior to the
terminator of the basic block provided, but really at the end of the
basic block. Instead, get the terminator and insert before that. The
next issue was that we need to ensure multiple PHI node entries for
a single predecessor re-use the same cast instruction rather than
creating new ones.

All of the logic here was without tests previously. I've reduced and
added a test case from the test suite that crashed without both of these
fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220186 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/JumpThreading.cpp
test/Transforms/JumpThreading/thread-loads.ll