[llvm] fd21361 - [NFC][SROA] `rewriteMemOpOfSelect()`: play nice with typed pointers for now
Roman Lebedev via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 12 10:16:36 PST 2022
Author: Roman Lebedev
Date: 2022-12-12T21:16:14+03:00
New Revision: fd21361a794207e01b26e1db57217b0ddad47be5
URL: https://github.com/llvm/llvm-project/commit/fd21361a794207e01b26e1db57217b0ddad47be5
DIFF: https://github.com/llvm/llvm-project/commit/fd21361a794207e01b26e1db57217b0ddad47be5.diff
LOG: [NFC][SROA] `rewriteMemOpOfSelect()`: play nice with typed pointers for now
https://github.com/llvm/llvm-project/commit/89a6106ce50689c733be13aaef4be5f3f73708a2#commitcomment-92824429
Added:
Modified:
llvm/lib/Transforms/Scalar/SROA.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/SROA.cpp b/llvm/lib/Transforms/Scalar/SROA.cpp
index edf999ec36a40..538f39f24cc98 100644
--- a/llvm/lib/Transforms/Scalar/SROA.cpp
+++ b/llvm/lib/Transforms/Scalar/SROA.cpp
@@ -1596,8 +1596,13 @@ static void rewriteMemOpOfSelect(SelectInst &SI, T &I,
++NumLoadsSpeculated;
auto &CondMemOp = cast<T>(*I.clone());
CondMemOp.insertBefore(NewMemOpBB->getTerminator());
- CondMemOp.setOperand(I.getPointerOperandIndex(),
- SI.getOperand(1 + SuccIdx));
+ Value *Ptr = SI.getOperand(1 + SuccIdx);
+ if (auto *PtrTy = Ptr->getType();
+ !PtrTy->isOpaquePointerTy() &&
+ PtrTy != CondMemOp.getPointerOperandType())
+ Ptr = BitCastInst::CreatePointerBitCastOrAddrSpaceCast(
+ Ptr, CondMemOp.getPointerOperandType(), "", &CondMemOp);
+ CondMemOp.setOperand(I.getPointerOperandIndex(), Ptr);
if (isa<LoadInst>(I)) {
CondMemOp.setName(I.getName() + (IsThen ? ".then" : ".else") + ".val");
PN->addIncoming(&CondMemOp, NewMemOpBB);
More information about the llvm-commits
mailing list