[PATCH] D102689: [C++4OpenCL] Allow address space conversion in reinterpret_cast
John McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon May 24 13:17:16 PDT 2021
rjmccall added a reviewer: rsmith.
rjmccall added a comment.
Top-level qualifiers aren't normally meaningful on pr-values.
The C standard says that casts are to the unqualified type:
N2454 6.5.4p5: Preceding an expression by a parenthesized type name converts the value of the expression to the unqualified version of the named type.
The C++ standard does not appear to have similar wording. On the other hand, the C++ standard says that e.g. "The result of the expression `(T) cast-expression` is of type `T`", and similarly for the other casts, which is clearly just wrong if `T` is a reference type; the wording clarifies that the expression is an l-value or x-value if the type is a reference but doesn't remove the reference-ness of the expression type as it must, unless that's done by some other clause at a distance. CC'ing Richard.
It makes sense to me that qualifiers on the cast type ought to be uniformly and silently ignored, including address space qualifiers. C++ has a very strange feature of allowing qualifiers on class types in particular circumstances, so we might need to be permissive about that, although that's tricky for address spaces because (unlike with `const` or `volatile`) we cannot in fact allocate a temporary in an arbitrary address space.
I agree that this should be done uniformly, not just in OpenCL, unless OpenCL wants rules that differ from what we think they ought to be in general.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D102689/new/
https://reviews.llvm.org/D102689
More information about the cfe-commits
mailing list