Clarify that the "type conflict" rule ignores cv-qualifiers#167
Clarify that the "type conflict" rule ignores cv-qualifiers#167zygoloid wants to merge 2 commits intoitanium-cxx-abi:mainfrom
Conversation
GCC and Clang have divergent implementations of `[[no_unique_address]]` due to not ignoring cv-qualifiers in this check. The standard is being amended to say that cv-qualifiers should be ignored. Do the same in the corresponding ABI rule.
|
@jicama FYI |
abi.html
Outdated
| components (direct or indirect) of the same type having the | ||
| same offset. | ||
| components (direct or indirect) of the same type (ignoring | ||
| cv-qualifiers) having the same offset. |
There was a problem hiding this comment.
This should be top-level cv-qualifiers.
There was a problem hiding this comment.
Hm, are you thinking of cv-qualifiers in template arguments? Empty types can't have non-top-level cv-qualifiers in the usual sense (and if they could, they should be ignored here too, because we don't want objects with similar types to have the same address).
There was a problem hiding this comment.
Being clear about the qualifiers being ignored only being the top-level qualifiers seems like the right thing to do. If for some strange reason we ever add a new fundamental type that can be empty, the right default rule to apply here would be to ignore only the top-level qualifiers. A type similarity rule would necessarily be specific to the new fundamental type.
There was a problem hiding this comment.
We can avoid the question entirely and specify the rule in terms of whether the types are similar. Done.
GCC and Clang have divergent implementations of
[[no_unique_address]]due to not ignoring cv-qualifiers in this check. The standard is being amended to say that cv-qualifiers should be ignored. Do the same in the corresponding ABI rule.