Skip to content

Conversation

dbartol
Copy link

@dbartol dbartol commented Apr 13, 2020

The IR generation for InitializeIndirection currently connects its load operand to the result of the corresponding InitializeParameter instruction. This isn't exactly wrong, but it doesn't fit the IR invariant of "All unmodeled uses consume UnmodeledDefinition". Our current code doesn't care, because we just throw away all of the existing def-use information, modeled or otherwise, when we build unaliased SSA. However, some upcoming SSA changes don't work correctly if this invariant is broken.

I've added the trivial IR generation change, along with a new sanity query.

The IR generation for `InitializeIndirection` currently connects its load operand to the result of the corresponding `InitializeParameter` instruction. This isn't exactly wrong, but it doesn't fit the IR invariant of "All unmodeled uses consume `UnmodeledDefinition`". Our current code doesn't care, because we just throw away all of the existing def-use information, modeled or otherwise, when we build unaliased SSA. However, some upcoming SSA changes don't work correctly if this invariant is broken.

I've added the trivial IR generation change, along with a new sanity query.
@dbartol dbartol added the C++ label Apr 13, 2020
@dbartol dbartol requested review from a team as code owners April 13, 2020 22:38
rdmarsh2
rdmarsh2 previously approved these changes Apr 13, 2020
Copy link
Contributor

@rdmarsh2 rdmarsh2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@rdmarsh2 rdmarsh2 merged commit be81a1a into github:master Apr 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants