Anastasia added a comment.

In D58060#1396416 <https://reviews.llvm.org/D58060#1396416>, @ebevhan wrote:

> So static_cast permits conversions from AS1 to AS2 where that conversion is 
> implicitly allowed, and the new addrspace_cast would permit conversions from 
> AS1 to AS2 where it is explicitly allowed. That seems like it fits in rather 
> well with the idea in D57464 <https://reviews.llvm.org/D57464> regarding 
> support for specifying permitted AS conversions in target.
>
> How about nested pointers, such as `__X int * *` -> `__Y int * *` or `__X int 
> * __Y *` -> `int * __Y *`? static_cast has some ruleset for how to deal with 
> qualifiers in nested pointers, I think, but I'm not sure how the rules for 
> ASes should be here.


We had discussion related to this with John earlier. And I documented it in 
this bug: https://bugs.llvm.org/show_bug.cgi?id=39674

> There's also C-style casts. Will addrspace_cast be added to the C-style cast 
> rules somewhere?
> 
> (I should probably have commented on the original RFC)

Yes, exactly. I am working on a patch now that separates the address space 
casting out into a function to be used in C-style cast only as a first step 
(because I would like to disallow accidental unsafe address space conversions 
in `reinterpret_cast`). Then we would just need to add parsing of a new cast 
operator and mapping into the new function.


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

https://reviews.llvm.org/D58060



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to