@@ -5745,12 +5745,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
5745
5745
Address DestAddr = EmitMSVAListRef(E->getArg(0));
5746
5746
Address SrcAddr = EmitMSVAListRef(E->getArg(1));
5747
5747
5748
- llvm::Type *BPP = Int8PtrPtrTy;
5749
-
5750
- DestAddr = Address(Builder.CreateBitCast(DestAddr.getPointer(), BPP, "cp"),
5751
- Int8PtrTy, DestAddr.getAlignment());
5752
- SrcAddr = Address(Builder.CreateBitCast(SrcAddr.getPointer(), BPP, "ap"),
5753
- Int8PtrTy, SrcAddr.getAlignment());
5748
+ DestAddr = DestAddr.withElementType(Int8PtrTy);
5749
+ SrcAddr = SrcAddr.withElementType(Int8PtrTy);
5754
5750
5755
5751
Value *ArgPtr = Builder.CreateLoad(SrcAddr, "ap.val");
5756
5752
return RValue::get(Builder.CreateStore(ArgPtr, DestAddr));
@@ -8424,8 +8420,7 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
8424
8420
}
8425
8421
8426
8422
Value *LdPtr = EmitScalarExpr(E->getArg(0));
8427
- Value *Val = Builder.CreateCall(F, Builder.CreateBitCast(LdPtr, Int8PtrTy),
8428
- "ldrexd");
8423
+ Value *Val = Builder.CreateCall(F, LdPtr, "ldrexd");
8429
8424
8430
8425
Value *Val0 = Builder.CreateExtractValue(Val, 1);
8431
8426
Value *Val1 = Builder.CreateExtractValue(Val, 0);
@@ -8483,7 +8478,7 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
8483
8478
8484
8479
Value *Arg0 = Builder.CreateExtractValue(Val, 0);
8485
8480
Value *Arg1 = Builder.CreateExtractValue(Val, 1);
8486
- Value *StPtr = Builder.CreateBitCast( EmitScalarExpr(E->getArg(1)), Int8PtrTy );
8481
+ Value *StPtr = EmitScalarExpr(E->getArg(1));
8487
8482
return Builder.CreateCall(F, {Arg0, Arg1, StPtr}, "strexd");
8488
8483
}
8489
8484
0 commit comments