================
@@ -3878,7 +3878,18 @@ void SelectionDAGBuilder::visitSIToFP(const User &I) {
}
void SelectionDAGBuilder::visitPtrToAddr(const User &I) {
- visitPtrToInt(I);
+ const auto &TLI = DAG.getTargetLoweringInfo();
+ const DataLayout &DL = DAG.getDataLayout();
+ LLVMContext &Ctx = *DAG.getContext();
+ // ptrtoaddr is equivalent to a truncate of ptrtoint to address/index width
+ SDValue N = getValue(I.getOperand(0));
+ Type *PtrTy = I.getOperand(0)->getType();
+ EVT AddrVT = EVT::getIntegerVT(Ctx, DL.getPointerAddressSizeInBits(PtrTy));
+ if (auto *VTy = dyn_cast<VectorType>(PtrTy))
+ AddrVT = EVT::getVectorVT(Ctx, AddrVT, VTy->getElementCount());
+ N = DAG.getPtrExtOrTrunc(N, getCurSDLoc(), AddrVT);
----------------
arsenm wrote:
The LangRef says that it's always zero extend, but DAG.getPtrExtOrTrunc's
comment suggests it may decide to be another extension some day?
https://github.com/llvm/llvm-project/pull/139423
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits