@@ -111,6 +111,10 @@ static void transferDecorations(Value &NewVal, VPIntrinsic &VPI) {
111
111
// / OldVP gets erased.
112
112
static void replaceOperation (Value &NewOp, VPIntrinsic &OldOp) {
113
113
transferDecorations (NewOp, OldOp);
114
+
115
+ if (isa<Instruction>(NewOp) && !NewOp.hasName () && OldOp.hasName ())
116
+ NewOp.takeName (&OldOp);
117
+
114
118
OldOp.replaceAllUsesWith (&NewOp);
115
119
OldOp.eraseFromParent ();
116
120
}
@@ -253,7 +257,7 @@ bool CachingVPExpander::expandPredicationInBinaryOperator(IRBuilder<> &Builder,
253
257
}
254
258
}
255
259
256
- Value *NewBinOp = Builder.CreateBinOp (OC, Op0, Op1, VPI. getName () );
260
+ Value *NewBinOp = Builder.CreateBinOp (OC, Op0, Op1);
257
261
258
262
replaceOperation (*NewBinOp, VPI);
259
263
return true ;
@@ -268,8 +272,8 @@ bool CachingVPExpander::expandPredicationToIntCall(IRBuilder<> &Builder,
268
272
for (unsigned i = 0 ; i < VPI.getNumOperands () - 3 ; i++) {
269
273
Argument.push_back (VPI.getOperand (i));
270
274
}
271
- Value *NewOp = Builder. CreateIntrinsic (FID. value (), {VPI. getType ()}, Argument,
272
- /* FMFSource= */ nullptr , VPI.getName () );
275
+ Value *NewOp =
276
+ Builder. CreateIntrinsic (FID. value (), { VPI.getType ()}, Argument );
273
277
replaceOperation (*NewOp, VPI);
274
278
return true ;
275
279
}
@@ -288,9 +292,8 @@ bool CachingVPExpander::expandPredicationToFPCall(
288
292
for (unsigned i = 0 ; i < VPI.getNumOperands () - 3 ; i++) {
289
293
Argument.push_back (VPI.getOperand (i));
290
294
}
291
- Value *NewOp = Builder.CreateIntrinsic (
292
- UnpredicatedIntrinsicID, {VPI.getType ()}, Argument,
293
- /* FMFSource=*/ nullptr , VPI.getName ());
295
+ Value *NewOp = Builder.CreateIntrinsic (UnpredicatedIntrinsicID,
296
+ {VPI.getType ()}, Argument);
294
297
replaceOperation (*NewOp, VPI);
295
298
return true ;
296
299
}
@@ -305,10 +308,9 @@ bool CachingVPExpander::expandPredicationToFPCall(
305
308
VPI.getModule (), UnpredicatedIntrinsicID, {VPI.getType ()});
306
309
Value *NewOp;
307
310
if (Intrinsic::isConstrainedFPIntrinsic (UnpredicatedIntrinsicID))
308
- NewOp =
309
- Builder.CreateConstrainedFPCall (Fn, {Op0, Op1, Op2}, VPI.getName ());
311
+ NewOp = Builder.CreateConstrainedFPCall (Fn, {Op0, Op1, Op2});
310
312
else
311
- NewOp = Builder.CreateCall (Fn, {Op0, Op1, Op2}, VPI. getName () );
313
+ NewOp = Builder.CreateCall (Fn, {Op0, Op1, Op2});
312
314
replaceOperation (*NewOp, VPI);
313
315
return true ;
314
316
}
@@ -393,9 +395,8 @@ bool CachingVPExpander::expandPredicationToCastIntrinsic(IRBuilder<> &Builder,
393
395
Intrinsic::ID VPID = VPI.getIntrinsicID ();
394
396
unsigned CastOpcode = VPIntrinsic::getFunctionalOpcodeForVP (VPID).value ();
395
397
assert (Instruction::isCast (CastOpcode));
396
- Value *CastOp =
397
- Builder.CreateCast (Instruction::CastOps (CastOpcode), VPI.getOperand (0 ),
398
- VPI.getType (), VPI.getName ());
398
+ Value *CastOp = Builder.CreateCast (Instruction::CastOps (CastOpcode),
399
+ VPI.getOperand (0 ), VPI.getType ());
399
400
400
401
replaceOperation (*CastOp, VPI);
401
402
return true ;
@@ -454,8 +455,8 @@ bool CachingVPExpander::expandPredicationInMemoryIntrinsic(IRBuilder<> &Builder,
454
455
auto *ElementType = cast<VectorType>(VPI.getType ())->getElementType ();
455
456
NewMemoryInst = Builder.CreateMaskedGather (
456
457
VPI.getType (), PtrParam,
457
- AlignOpt.value_or (DL.getPrefTypeAlign (ElementType)), MaskParam, nullptr ,
458
- VPI. getName () );
458
+ AlignOpt.value_or (DL.getPrefTypeAlign (ElementType)), MaskParam,
459
+ nullptr );
459
460
break ;
460
461
}
461
462
}
@@ -577,15 +578,15 @@ bool CachingVPExpander::expandPredication(VPIntrinsic &VPI) {
577
578
default :
578
579
break ;
579
580
case Intrinsic::vp_fneg: {
580
- Value *NewNegOp = Builder.CreateFNeg (VPI.getOperand (0 ), VPI. getName () );
581
+ Value *NewNegOp = Builder.CreateFNeg (VPI.getOperand (0 ));
581
582
replaceOperation (*NewNegOp, VPI);
582
583
return NewNegOp;
583
584
}
584
585
case Intrinsic::vp_select:
585
586
case Intrinsic::vp_merge: {
586
587
assert (maySpeculateLanes (VPI) || VPI.canIgnoreVectorLengthParam ());
587
588
Value *NewSelectOp = Builder.CreateSelect (
588
- VPI.getOperand (0 ), VPI.getOperand (1 ), VPI.getOperand (2 ), VPI. getName () );
589
+ VPI.getOperand (0 ), VPI.getOperand (1 ), VPI.getOperand (2 ));
589
590
replaceOperation (*NewSelectOp, VPI);
590
591
return NewSelectOp;
591
592
}
0 commit comments