Skip to content

Commit 10e4835

Browse files
authored
[clang][CodeGen] Remove ptr-to-ptr bitcasts (NFC) (llvm#73020)
Opaque ptr cleanup effort
1 parent 1fb91be commit 10e4835

File tree

2 files changed

+5
-11
lines changed

2 files changed

+5
-11
lines changed

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5745,12 +5745,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
57455745
Address DestAddr = EmitMSVAListRef(E->getArg(0));
57465746
Address SrcAddr = EmitMSVAListRef(E->getArg(1));
57475747

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);
57545750

57555751
Value *ArgPtr = Builder.CreateLoad(SrcAddr, "ap.val");
57565752
return RValue::get(Builder.CreateStore(ArgPtr, DestAddr));
@@ -8424,8 +8420,7 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
84248420
}
84258421

84268422
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");
84298424

84308425
Value *Val0 = Builder.CreateExtractValue(Val, 1);
84318426
Value *Val1 = Builder.CreateExtractValue(Val, 0);
@@ -8483,7 +8478,7 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
84838478

84848479
Value *Arg0 = Builder.CreateExtractValue(Val, 0);
84858480
Value *Arg1 = Builder.CreateExtractValue(Val, 1);
8486-
Value *StPtr = Builder.CreateBitCast(EmitScalarExpr(E->getArg(1)), Int8PtrTy);
8481+
Value *StPtr = EmitScalarExpr(E->getArg(1));
84878482
return Builder.CreateCall(F, {Arg0, Arg1, StPtr}, "strexd");
84888483
}
84898484

clang/lib/CodeGen/CGStmt.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1299,8 +1299,7 @@ void CodeGenFunction::EmitReturnStmt(const ReturnStmt &S) {
12991299
SLocPtr->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
13001300
CGM.getSanitizerMetadata()->disableSanitizerForGlobal(SLocPtr);
13011301
assert(ReturnLocation.isValid() && "No valid return location");
1302-
Builder.CreateStore(Builder.CreateBitCast(SLocPtr, Int8PtrTy),
1303-
ReturnLocation);
1302+
Builder.CreateStore(SLocPtr, ReturnLocation);
13041303
}
13051304

13061305
// Returning from an outlined SEH helper is UB, and we already warn on it.

0 commit comments

Comments
 (0)