Skip to content
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

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

zygoloid
Copy link
Contributor

@zygoloid zygoloid commented Sep 5, 2023

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.

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.
@zygoloid
Copy link
Contributor Author

zygoloid commented Sep 5, 2023

@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.
Copy link
Contributor

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.

Copy link
Contributor Author

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).

Copy link
Collaborator

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.

Copy link
Contributor Author

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.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, that works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants