C++: Fix IR generation for builtins and add flow through __builtin_bit_cast
#16688
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR does two things with the end goal of getting flow through this example:
First, we fix IR generation for builtins. We were not skipping children we could not translate, which caused the IR generation to fail since the first argument of
__builtin_bit_cast
is aTypeName
which has no IR representation. This meant that__builtin_bit_cast
had no operands in the IR (see the first commit which adds a test for this).We could have added IR generation for
TypeName
s, but that would involve introducing another IR instruction which I didn't really feel like doing since we currently have no use-cases for doing anything withTypeName
s in any queries.Second, we add flow through
__builtin_bit_cast
by treating it as a conversion in dataflow.Commit-by-commit review recommended