Page MenuHomePhabricator

[MemDep] Adjust NonLocalPointerDep handling to be more precise.
Needs ReviewPublic

Authored by john.brawn on Dec 10 2018, 7:37 AM.

Details

Summary

Currently the NonLocalDepResult for a pointer will have a BB value which is the block where the result is defined. This means that every block from there to StartBB will be marked as visited by the Pointer we used to get there, which means that for every other Pointer that tries to visit those blocks we get a Clobber result.

In many situations this is too imprecise and we could have chosen a block closer to StartBB without affecting the validity of the result, which means we can successfully find non-Clobber results for other Pointer values. This patch does just that, which makes GVN able to optimise in situations it currently can't.

Diff Detail

Repository
rL LLVM

Event Timeline

john.brawn created this revision.Dec 10 2018, 7:37 AM