From what I understand so far, getClobberingMemoryAccess isn't supposed to modify its MemoryLocation argument. Making this argument const permits callers to pass xvalues, such as:
MemoryAccess *Start; MemCpyInst *M; ... MSSA->getWalker()->getClobberingMemoryAccess(Start, MemoryLocation::getForSource(M));