[PATCH] D124382: [Clang] Recognize target address space in superset calculation

Artem Belevich via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri May 6 11:11:41 PDT 2022


tra added inline comments.


================
Comment at: clang/include/clang/AST/Type.h:508
+              static_cast<unsigned>(LangAS::FirstTargetAddressSpace));
+        // When dealing with target AS return true if:
+        // * A is equal to B, or
----------------
jchlanda wrote:
> tra wrote:
> > Is the code above intended to ensure that both A and B are target AS at this point?
> > If so, then it could be simplified to something like this:
> > ```
> > if (ASMap) {
> >   if (!isTargetAddressSpace(A))
> >     A = getLangASFromTargetAS((*ASMap)[static_cast<unsigned>(A)]);
> >   if (!isTargetAddressSpace(B))
> >     B = getLangASFromTargetAS((*ASMap)[static_cast<unsigned>(B)]);
> > 
> >   Generic = getLangASFromTargetAS((*ASMap)[static_cast<unsigned>(LangAS::opencl_generic)])
> >   Constant = getLangASFromTargetAS((*ASMap)[static_cast<unsigned>(LangAS::opencl_constant)]);
> > 
> >   // ... proceed inferring whether A is superset of B in target AS.
> >   return;
> > }
> > assert (isTargetAddressSpace(A) && isTargetAddressSpace(B));
> > ```
> Yes at the end of AS map accesses all address spaces have to be expressed in therms of HW values, but I want it to happen only in the case of mixed AS (Language and HW). I will add assert and use helpers, like you suggested in the snippet, but would like to keep the `^` condition.
> would like to keep the ^ condition.

OK. Adding a comment explaining what's going on would be helpful here.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D124382/new/

https://reviews.llvm.org/D124382



More information about the cfe-commits mailing list