[llvm-dev] [RFC] : LLVM IR should allow bitcast between address spaces with the same size
Philip Reames via llvm-dev
llvm-dev at lists.llvm.org
Mon Nov 29 10:28:41 PST 2021
On 11/29/21 10:19 AM, Matt Arsenault wrote:
>
>
>> On Nov 29, 2021, at 12:54, Philip Reames via llvm-dev
>> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>>
>> Strong -1 here. This seems like an abuse of bitcast to avoid nailing
>> down interfaces and semantics for restricted address space casts.
>> IMO, we should not accept the proposed IR change and should instead
>> work on standardizing APIs/semantics for restricted addrspacecasts.
>
> I think you are misunderstanding the point of the change. The
> motivating example is specifically not an address space cast. The
> reason to do this is not to improve the optimization of no-op address
> space casts, although that is a potential side effect. The point is to
> give the IR a way to represent a cast we know is a no-op cast to
> represent type punning in the original program without resorting to
> ptrtoint/inttoptr. This is to avoid the pessimization of ptrtoint, not
> to make no-op addrspacecast optimizations better.
My counter proposal would be: use an addrspacecast for the cast. Have
GVN insert an addrspacecast instead of ptrtoint/inttoptr.
From GVNs perspective, type punning *implies* that the resulting
addrspacecast must be mustalias. It doesn't have to explicitly query
anything to prove that. One thing to highlight: Two pointers in
different addrspaces can be mustalias *without* sharing the same bit
pattern. As a result, the GVN case implies mustalias, but *not* pointer
equality.
(I forget where we stand on whether addrspacecast is allowed to fault.
If we allow faults, we need a semantic restriction on introducing the
addrspacecast, but that's simply a target property check. I vaguely
think we don't allow addrspacecast to fault, and thus this aside is
irrelevant.)
For the nop case (e.g. where the bits are the same), add a TTI hook, and
teach ComputeKnownBits and other analyzes to selectively look back
through them.
Philip
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20211129/a35484da/attachment-0001.html>
More information about the llvm-dev
mailing list