[llvm-branch-commits] [llvm] [SelectionDAGBuilder] Use address width when lowering ptrtoaddr (PR #139423)
Matt Arsenault via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Aug 11 18:01:54 PDT 2025
================
@@ -3980,8 +3980,16 @@ void SelectionDAGBuilder::visitSIToFP(const User &I) {
}
void SelectionDAGBuilder::visitPtrToAddr(const User &I) {
- // FIXME: this is not correct for pointers with addr width != pointer width
- visitPtrToInt(I);
+ const auto &TLI = DAG.getTargetLoweringInfo();
+ const DataLayout &DL = DAG.getDataLayout();
+ // ptrtoaddr is equivalent to a truncate of ptrtoint to address/index width
+ auto Op0 = I.getOperand(0);
+ SDValue N = getValue(Op0);
+ // By definition the type of the ptrtoaddr must be equal to the address type.
+ assert(I.getType() == DL.getAddressType(Op0->getType()));
+ EVT AddrVT = TLI.getValueType(DL, I.getType());
+ N = DAG.getNode(ISD::TRUNCATE, getCurSDLoc(), AddrVT, N);
----------------
arsenm wrote:
If these are the same type, why do you need the truncate?
https://github.com/llvm/llvm-project/pull/139423
More information about the llvm-branch-commits
mailing list