Skip to content

Commit fd21361

Browse files
committed
[NFC][SROA] rewriteMemOpOfSelect(): play nice with typed pointers for now
llvm@89a6106#commitcomment-92824429
1 parent fc7b8e7 commit fd21361

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

llvm/lib/Transforms/Scalar/SROA.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1596,8 +1596,13 @@ static void rewriteMemOpOfSelect(SelectInst &SI, T &I,
15961596
++NumLoadsSpeculated;
15971597
auto &CondMemOp = cast<T>(*I.clone());
15981598
CondMemOp.insertBefore(NewMemOpBB->getTerminator());
1599-
CondMemOp.setOperand(I.getPointerOperandIndex(),
1600-
SI.getOperand(1 + SuccIdx));
1599+
Value *Ptr = SI.getOperand(1 + SuccIdx);
1600+
if (auto *PtrTy = Ptr->getType();
1601+
!PtrTy->isOpaquePointerTy() &&
1602+
PtrTy != CondMemOp.getPointerOperandType())
1603+
Ptr = BitCastInst::CreatePointerBitCastOrAddrSpaceCast(
1604+
Ptr, CondMemOp.getPointerOperandType(), "", &CondMemOp);
1605+
CondMemOp.setOperand(I.getPointerOperandIndex(), Ptr);
16011606
if (isa<LoadInst>(I)) {
16021607
CondMemOp.setName(I.getName() + (IsThen ? ".then" : ".else") + ".val");
16031608
PN->addIncoming(&CondMemOp, NewMemOpBB);

0 commit comments

Comments
 (0)