[GVNHoist] Change the key for VNtoInsns to a pair
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 18 Jul 2016 06:11:37 +0000 (06:11 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 18 Jul 2016 06:11:37 +0000 (06:11 +0000)
commit04c7c225a12e5857ad01dac3c1d63fb256c4b07c
treeeab679d9c6c18ca888c2ad486a6f1baa0980b217
parent16be8ee1fff9793becfde9d9815b257aadce1ca3
[GVNHoist] Change the key for VNtoInsns to a pair

While debugging GVNHoist, I found it confusing that the entries in a
VNtoInsns were not always value numbers.  They _usually_ were except for
StoreInst in which case they were a hash of two different value numbers.

This leads to two observations:
- It is more difficult to debug things when the semantic contents of
  VNtoInsns changes over time.
- Using a single value number is not much cheaper, the value of
  VNtoInsns is a SmallVector.
- It is not immediately clear what the algorithm would do if there were
  hash collisions in the StoreInst case.

Using a DenseMap of std::pair sidesteps all of this.

N.B.  The changes in the test were due their sensitivity to the
iteration order of VNtoInsns which has changed.

llvm-svn: 275761
llvm/lib/Transforms/Scalar/GVNHoist.cpp
llvm/test/Transforms/GVN/hoist.ll