@@ -689,10 +689,10 @@ class MicrosoftCXXABI : public CGCXXABI {
689689                                          llvm::Value *MemPtr,
690690                                          const  MemberPointerType *MPT) override ;
691691
692-   llvm::Value *
693-   EmitMemberDataPointerAddress (CodeGenFunction &CGF,  const  Expr *E ,
694-                                Address Base, llvm::Value *MemPtr ,
695-                                const  MemberPointerType *MPT ) override ;
692+   llvm::Value *EmitMemberDataPointerAddress (CodeGenFunction &CGF,  const  Expr *E, 
693+                                             Address Base, llvm::Value *MemPtr ,
694+                                              const  MemberPointerType *MPT ,
695+                                              bool  IsInBounds ) override ;
696696
697697  llvm::Value *EmitNonNullMemberPointerConversion (
698698      const  MemberPointerType *SrcTy, const  MemberPointerType *DstTy,
@@ -3240,7 +3240,7 @@ llvm::Value *MicrosoftCXXABI::AdjustVirtualBase(
32403240
32413241llvm::Value *MicrosoftCXXABI::EmitMemberDataPointerAddress (
32423242    CodeGenFunction &CGF, const  Expr *E, Address Base, llvm::Value *MemPtr,
3243-     const  MemberPointerType *MPT) {
3243+     const  MemberPointerType *MPT,  bool  IsInBounds ) {
32443244  assert (MPT->isMemberDataPointer ());
32453245  CGBuilderTy &Builder = CGF.Builder ;
32463246  const  CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl ();
@@ -3269,9 +3269,10 @@ llvm::Value *MicrosoftCXXABI::EmitMemberDataPointerAddress(
32693269    Addr = Base.emitRawPointer (CGF);
32703270  }
32713271
3272-   //  Apply the offset, which we assume is non-null.
3273-   return  Builder.CreateInBoundsGEP (CGF.Int8Ty , Addr, FieldOffset,
3274-                                    " memptr.offset"  );
3272+   //  Apply the offset.
3273+   return  Builder.CreateGEP (CGF.Int8Ty , Addr, FieldOffset, " memptr.offset"  ,
3274+                            IsInBounds ? llvm::GEPNoWrapFlags::inBounds ()
3275+                                       : llvm::GEPNoWrapFlags::none ());
32753276}
32763277
32773278llvm::Value *
0 commit comments