@@ -1288,9 +1288,8 @@ static llvm::Value *EmitBitTestIntrinsic(CodeGenFunction &CGF,
1288
1288
// Bit = BitBaseI8[BitPos >> 3] & (1 << (BitPos & 0x7)) != 0;
1289
1289
Value *ByteIndex = CGF.Builder.CreateAShr(
1290
1290
BitPos, llvm::ConstantInt::get(BitPos->getType(), 3), "bittest.byteidx");
1291
- Value *BitBaseI8 = CGF.Builder.CreatePointerCast(BitBase, CGF.Int8PtrTy);
1292
- Address ByteAddr(CGF.Builder.CreateInBoundsGEP(CGF.Int8Ty, BitBaseI8,
1293
- ByteIndex, "bittest.byteaddr"),
1291
+ Address ByteAddr(CGF.Builder.CreateInBoundsGEP(CGF.Int8Ty, BitBase, ByteIndex,
1292
+ "bittest.byteaddr"),
1294
1293
CGF.Int8Ty, CharUnits::One());
1295
1294
Value *PosLow =
1296
1295
CGF.Builder.CreateAnd(CGF.Builder.CreateTrunc(BitPos, CGF.Int8Ty),
@@ -5658,14 +5657,13 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
5658
5657
*Arg3 = EmitScalarExpr(E->getArg(3));
5659
5658
llvm::FunctionType *FTy = llvm::FunctionType::get(
5660
5659
Int32Ty, llvm::ArrayRef<llvm::Type *>(ArgTys), false);
5661
- Value *BCast = Builder.CreatePointerCast(Arg3, I8PTy);
5662
5660
// We know the third argument is an integer type, but we may need to cast
5663
5661
// it to i32.
5664
5662
if (Arg2->getType() != Int32Ty)
5665
5663
Arg2 = Builder.CreateZExtOrTrunc(Arg2, Int32Ty);
5666
5664
return RValue::get(
5667
5665
EmitRuntimeCall(CGM.CreateRuntimeFunction(FTy, Name),
5668
- {Arg0, Arg1, Arg2, BCast , PacketSize, PacketAlign}));
5666
+ {Arg0, Arg1, Arg2, Arg3 , PacketSize, PacketAlign}));
5669
5667
}
5670
5668
}
5671
5669
// OpenCL v2.0 s6.13.16 ,s9.17.3.5 - Built-in pipe reserve read and write
@@ -11317,7 +11315,6 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,
11317
11315
Value *Dst = EmitScalarExpr(E->getArg(0));
11318
11316
Value *Val = EmitScalarExpr(E->getArg(1));
11319
11317
Value *Size = EmitScalarExpr(E->getArg(2));
11320
- Dst = Builder.CreatePointerCast(Dst, Int8PtrTy);
11321
11318
Val = Builder.CreateTrunc(Val, Int8Ty);
11322
11319
Size = Builder.CreateIntCast(Size, Int64Ty, false);
11323
11320
return Builder.CreateCall(
@@ -11342,34 +11339,27 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,
11342
11339
}
11343
11340
11344
11341
if (MTEIntrinsicID != Intrinsic::not_intrinsic) {
11345
- llvm::Type *T = ConvertType(E->getType());
11346
-
11347
11342
if (MTEIntrinsicID == Intrinsic::aarch64_irg) {
11348
11343
Value *Pointer = EmitScalarExpr(E->getArg(0));
11349
11344
Value *Mask = EmitScalarExpr(E->getArg(1));
11350
11345
11351
- Pointer = Builder.CreatePointerCast(Pointer, Int8PtrTy);
11352
11346
Mask = Builder.CreateZExt(Mask, Int64Ty);
11353
- Value *RV = Builder.CreateCall(
11354
- CGM.getIntrinsic(MTEIntrinsicID), {Pointer, Mask});
11355
- return Builder.CreatePointerCast(RV, T);
11347
+ return Builder.CreateCall(CGM.getIntrinsic(MTEIntrinsicID),
11348
+ {Pointer, Mask});
11356
11349
}
11357
11350
if (MTEIntrinsicID == Intrinsic::aarch64_addg) {
11358
11351
Value *Pointer = EmitScalarExpr(E->getArg(0));
11359
11352
Value *TagOffset = EmitScalarExpr(E->getArg(1));
11360
11353
11361
- Pointer = Builder.CreatePointerCast(Pointer, Int8PtrTy);
11362
11354
TagOffset = Builder.CreateZExt(TagOffset, Int64Ty);
11363
- Value *RV = Builder.CreateCall(
11364
- CGM.getIntrinsic(MTEIntrinsicID), {Pointer, TagOffset});
11365
- return Builder.CreatePointerCast(RV, T);
11355
+ return Builder.CreateCall(CGM.getIntrinsic(MTEIntrinsicID),
11356
+ {Pointer, TagOffset});
11366
11357
}
11367
11358
if (MTEIntrinsicID == Intrinsic::aarch64_gmi) {
11368
11359
Value *Pointer = EmitScalarExpr(E->getArg(0));
11369
11360
Value *ExcludedMask = EmitScalarExpr(E->getArg(1));
11370
11361
11371
11362
ExcludedMask = Builder.CreateZExt(ExcludedMask, Int64Ty);
11372
- Pointer = Builder.CreatePointerCast(Pointer, Int8PtrTy);
11373
11363
return Builder.CreateCall(
11374
11364
CGM.getIntrinsic(MTEIntrinsicID), {Pointer, ExcludedMask});
11375
11365
}
@@ -11378,25 +11368,20 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,
11378
11368
// return address same as input address.
11379
11369
if (MTEIntrinsicID == Intrinsic::aarch64_ldg) {
11380
11370
Value *TagAddress = EmitScalarExpr(E->getArg(0));
11381
- TagAddress = Builder.CreatePointerCast(TagAddress, Int8PtrTy);
11382
- Value *RV = Builder.CreateCall(
11383
- CGM.getIntrinsic(MTEIntrinsicID), {TagAddress, TagAddress});
11384
- return Builder.CreatePointerCast(RV, T);
11371
+ return Builder.CreateCall(CGM.getIntrinsic(MTEIntrinsicID),
11372
+ {TagAddress, TagAddress});
11385
11373
}
11386
11374
// Although it is possible to supply a different tag (to set)
11387
11375
// to this intrinsic (as first arg), for now we supply
11388
11376
// the tag that is in input address arg (common use case).
11389
11377
if (MTEIntrinsicID == Intrinsic::aarch64_stg) {
11390
- Value *TagAddress = EmitScalarExpr(E->getArg(0));
11391
- TagAddress = Builder.CreatePointerCast(TagAddress, Int8PtrTy);
11392
- return Builder.CreateCall(
11393
- CGM.getIntrinsic(MTEIntrinsicID), {TagAddress, TagAddress});
11378
+ Value *TagAddress = EmitScalarExpr(E->getArg(0));
11379
+ return Builder.CreateCall(CGM.getIntrinsic(MTEIntrinsicID),
11380
+ {TagAddress, TagAddress});
11394
11381
}
11395
11382
if (MTEIntrinsicID == Intrinsic::aarch64_subp) {
11396
11383
Value *PointerA = EmitScalarExpr(E->getArg(0));
11397
11384
Value *PointerB = EmitScalarExpr(E->getArg(1));
11398
- PointerA = Builder.CreatePointerCast(PointerA, Int8PtrTy);
11399
- PointerB = Builder.CreatePointerCast(PointerB, Int8PtrTy);
11400
11385
return Builder.CreateCall(
11401
11386
CGM.getIntrinsic(MTEIntrinsicID), {PointerA, PointerB});
11402
11387
}
0 commit comments