{"push_id":537009121,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"888ee76367bc576aa35e2242cedef2a11c0b32a7","before":"40a8741994361b2125e136683f11c20a88874926","commits":[{"sha":"888ee76367bc576aa35e2242cedef2a11c0b32a7","author":{"email":"420c9fb3407b8e11ac322a0e7703f7b1f526df04@gmail.com","name":"Chandler Carruth"},"message":"[SROA] Make the computation of adjusted pointers not leak GEP\ninstructions.\n\nI noticed this when working on dialing up how aggressively we can\npre-split loads and stores. My test case wasn't passing because dead\nGEPs into the allocas persisted when they were built by this routine.\nThis isn't terribly harmful, we still rewrote and promoted the alloca\nand I can't conceive of how to cause this to happen in a case where we\nwill keep the exact same alloca but rewrite and promote the uses of it.\nIf that ever happened, we'd get an assert out of mem2reg.\n\nSo I don't have a direct test case yet, but the subsequent commit's test\ncase wouldn't pass without this. There are other problems fixed by this\npatch that I spotted purely by inspection such as the fact that\ngetAdjustedPtr could have actually deleted dead base pointers. I don't\nknow how to get a base pointer to go into getAdjustedPtr today, so\nI think this bug could never have manifested (and I certainly can't\nwrite a test case for it) but, it wasn't the intent of the code. The\ncode really just wanted to GC the new instructions built. That can be\ndone more directly by comparing with the base pointer which is the only\nnon-new instruction that this code can return.\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225073 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/llvm-project/llvm/commits/888ee76367bc576aa35e2242cedef2a11c0b32a7"}]}