Commits

Manman Ren committed 084ad2f21ce
[Load Store Opts] use BBArguments to merge in multiple stores. We use a DenseMap to map an address to a list of reaching StoreInsts, one for each predecessor. The map is passed as function arguments instead of a member in LSBBForwarder since it is only used during one invocation of optimizing a basic block. We can now remove all loads in rdar://17613168 and enable dead object elimination. There is one issue though, one of the loads is loop invariant and is moved outside by LICM, but we need to run LoadStoreOpt and DeadObjectElim afterwards to actually remove the dead object. Performance for rdar://17613168 (with added passes after LICM): -Ounchecked: 13.8s to 0.199s -O: 15.4s to 2s Swift SVN r20922