@@ -1288,9 +1288,8 @@ static llvm::Value *EmitBitTestIntrinsic(CodeGenFunction &CGF,
12881288 // Bit = BitBaseI8[BitPos >> 3] & (1 << (BitPos & 0x7)) != 0;
12891289 Value *ByteIndex = CGF.Builder.CreateAShr(
12901290 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"),
12941293 CGF.Int8Ty, CharUnits::One());
12951294 Value *PosLow =
12961295 CGF.Builder.CreateAnd(CGF.Builder.CreateTrunc(BitPos, CGF.Int8Ty),
@@ -5658,14 +5657,13 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
56585657 *Arg3 = EmitScalarExpr(E->getArg(3));
56595658 llvm::FunctionType *FTy = llvm::FunctionType::get(
56605659 Int32Ty, llvm::ArrayRef<llvm::Type *>(ArgTys), false);
5661- Value *BCast = Builder.CreatePointerCast(Arg3, I8PTy);
56625660 // We know the third argument is an integer type, but we may need to cast
56635661 // it to i32.
56645662 if (Arg2->getType() != Int32Ty)
56655663 Arg2 = Builder.CreateZExtOrTrunc(Arg2, Int32Ty);
56665664 return RValue::get(
56675665 EmitRuntimeCall(CGM.CreateRuntimeFunction(FTy, Name),
5668- {Arg0, Arg1, Arg2, BCast , PacketSize, PacketAlign}));
5666+ {Arg0, Arg1, Arg2, Arg3 , PacketSize, PacketAlign}));
56695667 }
56705668 }
56715669 // 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,
1131711315 Value *Dst = EmitScalarExpr(E->getArg(0));
1131811316 Value *Val = EmitScalarExpr(E->getArg(1));
1131911317 Value *Size = EmitScalarExpr(E->getArg(2));
11320- Dst = Builder.CreatePointerCast(Dst, Int8PtrTy);
1132111318 Val = Builder.CreateTrunc(Val, Int8Ty);
1132211319 Size = Builder.CreateIntCast(Size, Int64Ty, false);
1132311320 return Builder.CreateCall(
@@ -11342,34 +11339,27 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,
1134211339 }
1134311340
1134411341 if (MTEIntrinsicID != Intrinsic::not_intrinsic) {
11345- llvm::Type *T = ConvertType(E->getType());
11346-
1134711342 if (MTEIntrinsicID == Intrinsic::aarch64_irg) {
1134811343 Value *Pointer = EmitScalarExpr(E->getArg(0));
1134911344 Value *Mask = EmitScalarExpr(E->getArg(1));
1135011345
11351- Pointer = Builder.CreatePointerCast(Pointer, Int8PtrTy);
1135211346 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});
1135611349 }
1135711350 if (MTEIntrinsicID == Intrinsic::aarch64_addg) {
1135811351 Value *Pointer = EmitScalarExpr(E->getArg(0));
1135911352 Value *TagOffset = EmitScalarExpr(E->getArg(1));
1136011353
11361- Pointer = Builder.CreatePointerCast(Pointer, Int8PtrTy);
1136211354 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});
1136611357 }
1136711358 if (MTEIntrinsicID == Intrinsic::aarch64_gmi) {
1136811359 Value *Pointer = EmitScalarExpr(E->getArg(0));
1136911360 Value *ExcludedMask = EmitScalarExpr(E->getArg(1));
1137011361
1137111362 ExcludedMask = Builder.CreateZExt(ExcludedMask, Int64Ty);
11372- Pointer = Builder.CreatePointerCast(Pointer, Int8PtrTy);
1137311363 return Builder.CreateCall(
1137411364 CGM.getIntrinsic(MTEIntrinsicID), {Pointer, ExcludedMask});
1137511365 }
@@ -11378,25 +11368,20 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,
1137811368 // return address same as input address.
1137911369 if (MTEIntrinsicID == Intrinsic::aarch64_ldg) {
1138011370 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});
1138511373 }
1138611374 // Although it is possible to supply a different tag (to set)
1138711375 // to this intrinsic (as first arg), for now we supply
1138811376 // the tag that is in input address arg (common use case).
1138911377 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});
1139411381 }
1139511382 if (MTEIntrinsicID == Intrinsic::aarch64_subp) {
1139611383 Value *PointerA = EmitScalarExpr(E->getArg(0));
1139711384 Value *PointerB = EmitScalarExpr(E->getArg(1));
11398- PointerA = Builder.CreatePointerCast(PointerA, Int8PtrTy);
11399- PointerB = Builder.CreatePointerCast(PointerB, Int8PtrTy);
1140011385 return Builder.CreateCall(
1140111386 CGM.getIntrinsic(MTEIntrinsicID), {PointerA, PointerB});
1140211387 }
0 commit comments