-
Notifications
You must be signed in to change notification settings - Fork 96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarify that the "type conflict" rule ignores cv-qualifiers #167
base: main
Are you sure you want to change the base?
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be top-level cv-qualifiers.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can avoid the question entirely and specify the rule in terms of whether the types are similar. Done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, that works.
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.