reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
  596   llvm::Value *RawAdj = Builder.CreateExtractValue(MemFnPtr, 1, "memptr.adj");
  601     Adj = Builder.CreateAShr(Adj, ptrdiff_1, "memptr.adj.shifted");
  606   llvm::Value *Ptr = Builder.CreateBitCast(This, Builder.getInt8PtrTy());
  606   llvm::Value *Ptr = Builder.CreateBitCast(This, Builder.getInt8PtrTy());
  607   Ptr = Builder.CreateInBoundsGEP(Ptr, Adj);
  608   This = Builder.CreateBitCast(Ptr, This->getType(), "this.adjusted");
  612   llvm::Value *FnAsInt = Builder.CreateExtractValue(MemFnPtr, 0, "memptr.ptr");
  618     IsVirtual = Builder.CreateAnd(RawAdj, ptrdiff_1);
  620     IsVirtual = Builder.CreateAnd(FnAsInt, ptrdiff_1);
  621   IsVirtual = Builder.CreateIsNotNull(IsVirtual, "memptr.isvirtual");
  622   Builder.CreateCondBr(IsVirtual, FnVirtual, FnNonVirtual);
  630   llvm::Type *VTableTy = Builder.getInt8PtrTy();
  642     VTableOffset = Builder.CreateSub(VTableOffset, ptrdiff_1);
  644     VTableOffset = Builder.CreateTrunc(VTableOffset, CGF.Int32Ty);
  645     VTableOffset = Builder.CreateZExt(VTableOffset, CGM.PtrDiffTy);
  670     llvm::Value *VFPAddr = Builder.CreateGEP(VTable, VTableOffset);
  678       llvm::Value *CheckedLoad = Builder.CreateCall(
  681       CheckResult = Builder.CreateExtractValue(CheckedLoad, 1);
  682       VirtualFn = Builder.CreateExtractValue(CheckedLoad, 0);
  683       VirtualFn = Builder.CreateBitCast(VirtualFn, FTy->getPointerTo(),
  689         CheckResult = Builder.CreateCall(
  691             {Builder.CreateBitCast(VFPAddr, CGF.Int8PtrTy), TypeId});
  694           Builder.CreateBitCast(VFPAddr, FTy->getPointerTo()->getPointerTo());
  695       VirtualFn = Builder.CreateAlignedLoad(VFPAddr, CGF.getPointerAlign(),
  718         llvm::Value *ValidVtable = Builder.CreateCall(
  725       FnVirtual = Builder.GetInsertBlock();
  735     Builder.CreateIntToPtr(FnAsInt, FTy->getPointerTo(), "memptr.nonvirtualfn");
  749       llvm::Value *Bit = Builder.getFalse();
  751           Builder.CreateBitCast(NonVirtualFn, CGF.Int8PtrTy);
  761             Builder.CreateCall(CGM.getIntrinsic(llvm::Intrinsic::type_test),
  763         Bit = Builder.CreateOr(Bit, TypeTest);
  770       FnNonVirtual = Builder.GetInsertBlock();
  776   llvm::PHINode *CalleePtr = Builder.CreatePHI(FTy->getPointerTo(), 2);