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

[clang] Extend pointer interpretation handling to track explicitness #714

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from

Commits on Sep 4, 2023

  1. [clang] Extend pointer interpretation handling to track explicitness

    We need a new type like DependentPointerType for non-dependent contexts
    that can track __capability applied to things like typeof(...) in order
    to have a corresponding TypeLoc for the qualifier, otherwise things like
    TypeSpecLocFiller get out of sync and, in some cases assert (in other
    cases silently use the wrong DeclSpec). However, this then exposes the
    fact TypePrinter's PrintingPolicy's SuppressCapabilityQualifier isn't
    always able to be set to the right value (e.g. when printing out a
    reinterpret_cast<T> to the user, or when dumping the AST), and so we end
    up with redundant __capability qualifiers appearing for purecap code in
    some cases, and so we need to track alongside the pointer interpretation
    whether it was explicit (which also needs care to ensure it doesn't mess
    with canonicalisation). Whilst the output is now noisier in cases where
    __capability is used in purecap code, this is more faithful to the
    source.
    
    The churn in the AST output due to __capability in the source always
    being sugar is an unfortunate side-effect, but this should disappear
    if llvm/llvm-project#65214 is merged.
    
    Fixes #710
    jrtc27 committed Sep 4, 2023
    Configuration menu
    Copy the full SHA
    4d71789 View commit details
    Browse the repository at this point in the history