C++: Fix duplicate result types #3548
Merged
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.
I hit this while working on a different change. @rdmarsh2, this might (silently) affect your work on modeling
this
as a variable, because the type&this
is going to beglval<unknown>
.In a couple of cases, we use
glval<unknown>
as the result type of an instruction because we can't come up with anything better. Two examples are the result ofVariableAddress[#ellipsis]
, and the address of the temp variable that holds the lvalue result of the conditional operator in(a ? b : c) = y
. In both cases, we callgetTypeForGLValue(any(UnknownType t))
, but that would have multiple results becauseresult.hasType(any(UnknownType t), true)
also holds forCppFunctionGLValueType
. I tightened the result type to ensure we get the right one.