Now loads with invariant group will have the same
MemoryUse as dominating store/load with the same
invariant.group and pointer operand.
The algorithm is O(#invariant.group loads/stores in function),
which is much better compared to O(n^2) in MemDep.
NewGVN now handles some devirtualization cases, but
unfortunatelly not all of them.
comment this function? (as the one above)