This is an archive of the discontinued LLVM Phabricator instance.

[MemorySSA] Update defining access when instructions are not cloned.
AbandonedPublic

Authored by asbirlea on Sep 6 2019, 11:39 AM.

Details

Summary

Consider the case when instructions are not only simplified during
cloning (to be a use or to no longer have a MemoryAccess attached), but
they are not cloned at all, and hence not present in the map.
This is the case of debug.value calls.

Regularly we consider the new defining access as the same as the clone's
defining access, implying that, if it was not cloned, it must be outside
of the blocks being cloned.
For simplified cloning, this no longer holds. So if, an access was not
cloned, but the defining access is in the same block, look up in the Def
list to find the proper defining access.

Diff Detail

Event Timeline

asbirlea created this revision.Sep 6 2019, 11:39 AM
Herald added a project: Restricted Project. · View Herald TranscriptSep 6 2019, 11:39 AM

(Now that we have D67307, is this still needed? Happy to review if so, but this seems to be addressing primarily debuginfo-related bits)

asbirlea abandoned this revision.Sep 9 2019, 8:52 AM

I think the other patch covers this. Thanks!