don't trust completeStruct for typeinfo gen of imported C++ types [backport] #24166
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.
fixes #24159, refs #23761, refs #15928
Since #23761 the compiler generates typeinfo for imported types if they are marked
completeStruct
. However the C++ importedAtomic[T]
type is also markedcompleteStruct
and has a fake fieldraw: T
as a hack to calculate the correct size, which the typeinfo generation tries to refer to. To prevent this, don't generate typeinfo for any imported C++ type regardless ofcompleteStruct
. Alternatively the "size known" meaning ofcompleteStruct
could be split into another pragma likesizeKnown
forAtomic[T]
to use.Ideally this would be fixed by
Atomic[T]
no longer beingcompleteStruct
and its size being calculated viasize: sizeof(T)
instead, but the compiler does not support this and it would take a lot of effort to implement, so this is a temporary fix until that is done.This is marked as backport since #23761 was backported.