jhuber6 wrote:

> > This has a lot of unfortable effects that limit using address spaces in C++ 
> > as well
> > as making it more difficult to work with.
> 
> Can you give some examples?
> 
> It sounds that what you really want is for address space qualifiers to not be 
> part of a type signature. OpenCL sort of happens to avoid that by sticking 
> `__generic` AS qualifier on all pointers without one, and thus make plain 
> pointers _become_ `__generic` ones, which gets some C++ code happy, but that 
> does look like a quirk of OpenCL. Normally, we a) do not have an explicit 
> generic AS (or it would be indistinguishable from a plain pointer as it is on 
> LLVM level w/ AS(0)), and b) when we specialize a function with an 
> AS-specific pointer type, we generally do want it to be that type.
> 
> Clang and C++ indeed still have issues with AS-qualified pointers. E.g. 
> attempts to define function overloads with `AS(0)` and plain pointers result 
> in an error about conflicting name mangling: https://godbolt.org/z/fW3dP4an5
> 
> Yet C++ does not consider the types equivalent, so you can't pass plain 
> pointer as AS(0)-qualified argument and vice versa: 
> https://godbolt.org/z/K4PEv9e7j
> 
> It's a bug that needs fixing, IMO. We either treat unqualified ans AS(0) 
> pointer types as different, and give them different mangling. Or we should 
> treat AS(0) and plain pointer types the same, diagnose AS0/plain overloads as 
> redefinitions (no need to wait til we run into mangling conflict) and allow 
> using them interchangeably.
> 
> Would straightening this out help with the issue you're trying to solve?

Stuff like this is mostly what I'm talking about 
https://godbolt.org/z/1K8KGdqe9. I previously wanted to relax the handling of 
the default address space for all targets, but that made @AlexVlx unhappy in 
https://github.com/llvm/llvm-project/pull/112248.

https://github.com/llvm/llvm-project/pull/115777
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to