@@ -2986,7 +2986,6 @@ MicrosoftCXXABI::EmitMemberFunctionPointer(const CXXMethodDecl *MD) {
2986
2986
NonVirtualBaseAdjustment -= getContext ().getOffsetOfBaseWithVBPtr (RD);
2987
2987
2988
2988
// The rest of the fields are common with data member pointers.
2989
- FirstField = llvm::ConstantExpr::getBitCast (FirstField, CGM.VoidPtrTy );
2990
2989
return EmitFullMemberPointer (FirstField, /* IsMemberFunction=*/ true , RD,
2991
2990
NonVirtualBaseAdjustment, VBTableIndex);
2992
2991
}
@@ -3981,7 +3980,7 @@ llvm::Constant *MicrosoftCXXABI::getAddrOfRTTIDescriptor(QualType Type) {
3981
3980
3982
3981
// Check to see if we've already declared this TypeDescriptor.
3983
3982
if (llvm::GlobalVariable *GV = CGM.getModule ().getNamedGlobal (MangledName))
3984
- return llvm::ConstantExpr::getBitCast (GV, CGM. Int8PtrTy ) ;
3983
+ return GV ;
3985
3984
3986
3985
// Note for the future: If we would ever like to do deferred emission of
3987
3986
// RTTI, check if emitting vtables opportunistically need any adjustment.
@@ -4007,7 +4006,7 @@ llvm::Constant *MicrosoftCXXABI::getAddrOfRTTIDescriptor(QualType Type) {
4007
4006
MangledName);
4008
4007
if (Var->isWeakForLinker ())
4009
4008
Var->setComdat (CGM.getModule ().getOrInsertComdat (Var->getName ()));
4010
- return llvm::ConstantExpr::getBitCast ( Var, CGM. Int8PtrTy ) ;
4009
+ return Var;
4011
4010
}
4012
4011
4013
4012
// / Gets or a creates a Microsoft CompleteObjectLocator.
@@ -4200,8 +4199,6 @@ llvm::Constant *MicrosoftCXXABI::getCatchableType(QualType T,
4200
4199
CopyCtor = getAddrOfCXXCtorClosure (CD, Ctor_CopyingClosure);
4201
4200
else
4202
4201
CopyCtor = CGM.getAddrOfCXXStructor (GlobalDecl (CD, Ctor_Complete));
4203
-
4204
- CopyCtor = llvm::ConstantExpr::getBitCast (CopyCtor, CGM.Int8PtrTy );
4205
4202
} else {
4206
4203
CopyCtor = llvm::Constant::getNullValue (CGM.Int8PtrTy );
4207
4204
}
@@ -4411,14 +4408,11 @@ llvm::GlobalVariable *MicrosoftCXXABI::getThrowInfo(QualType T) {
4411
4408
if (const CXXRecordDecl *RD = T->getAsCXXRecordDecl ())
4412
4409
if (CXXDestructorDecl *DtorD = RD->getDestructor ())
4413
4410
if (!DtorD->isTrivial ())
4414
- CleanupFn = llvm::ConstantExpr::getBitCast (
4415
- CGM.getAddrOfCXXStructor (GlobalDecl (DtorD, Dtor_Complete)),
4416
- CGM.Int8PtrTy );
4411
+ CleanupFn = CGM.getAddrOfCXXStructor (GlobalDecl (DtorD, Dtor_Complete));
4417
4412
// This is unused as far as we can tell, initialize it to null.
4418
4413
llvm::Constant *ForwardCompat =
4419
4414
getImageRelativeConstant (llvm::Constant::getNullValue (CGM.Int8PtrTy ));
4420
- llvm::Constant *PointerToCatchableTypes = getImageRelativeConstant (
4421
- llvm::ConstantExpr::getBitCast (CTA, CGM.Int8PtrTy ));
4415
+ llvm::Constant *PointerToCatchableTypes = getImageRelativeConstant (CTA);
4422
4416
llvm::StructType *TIType = getThrowInfoType ();
4423
4417
llvm::Constant *Fields[] = {
4424
4418
llvm::ConstantInt::get (CGM.IntTy , Flags), // Flags
0 commit comments