ritter-x2a wrote:

> Maybe we could consider adding "ISD::PTRADD"? Lowers to ISD::ADD by default, 
> but targets that want to do weird things with pointer arithmetic could do 
> them.

 That would be helpful. We'd still need an inbounds flag for ISD::PTRADD, but 
it would certainly be easier to make use of. I'll look into that.

> One other concern, which applies to basically any formulation of this: Since 
> SelectionDAG doesn't have a distinct pointer type, you can't tell whether the 
> pointer operand was produced by an inttoptr. So in some cases, you have an 
> operation marked "inbounds", but it's ambiguous which object it's actually 
> inbounds to. This isn't really a problem at the moment because we do IR-level 
> transforms that remove inttoptr anyway, but if we ever do resolve the 
> IR-level issues, we should have some idea for how we propagate the fix to 
> SelectionDAG.

I can see that's a problem if you'd want to infer that an operation is 
inbounds, or if you'd want to prove the absence (or presence) of poison/UB. But 
how is that a problem for generating code? If there is an inbounds flag on a 
(hypothetical) ISD::PTRADD, we can assume that the operation is inbounds with 
respect to whatever the address operand is pointing to, no matter if it's the 
result of integer operations, right?



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

Reply via email to