Lines Matching refs:Value
35 #include "llvm/IR/Value.h"
115 llvm::Value *
119 llvm::Value *&ThisPtrForCall,
120 llvm::Value *MemFnPtr,
123 llvm::Value *
126 llvm::Value *MemPtr,
129 llvm::Value *EmitMemberPointerConversion(CodeGenFunction &CGF,
131 llvm::Value *Src) override;
144 llvm::Value *EmitMemberPointerComparison(CodeGenFunction &CGF,
145 llvm::Value *L, llvm::Value *R,
149 llvm::Value *EmitMemberPointerIsNotNull(CodeGenFunction &CGF,
150 llvm::Value *Addr,
177 llvm::Value *Exn) override;
190 llvm::Value *EmitTypeid(CodeGenFunction &CGF, QualType SrcRecordTy,
197 llvm::Value *EmitDynamicCastCall(CodeGenFunction &CGF, Address Value,
202 llvm::Value *EmitDynamicCastToVoid(CodeGenFunction &CGF, Address Value,
208 llvm::Value *
257 llvm::Value *getVTableAddressPointInStructor(
261 llvm::Value *getVTableAddressPointInStructorWithVTT(
272 llvm::Value *getVirtualFunctionPointer(CodeGenFunction &CGF, GlobalDecl GD,
276 llvm::Value *EmitVirtualDestructorCall(CodeGenFunction &CGF,
294 llvm::Value *performThisAdjustment(CodeGenFunction &CGF, Address This,
297 llvm::Value *performReturnAdjustment(CodeGenFunction &CGF, Address Ret,
313 llvm::Value *NumElements,
316 llvm::Value *readArrayCookieImpl(CodeGenFunction &CGF,
327 llvm::Value *Val);
427 llvm::Value *NumElements,
430 llvm::Value *readArrayCookieImpl(CodeGenFunction &CGF, Address allocPtr,
526 llvm::Value *ItaniumCXXABI::EmitLoadOfMemberFunctionPointer(
528 llvm::Value *&ThisPtrForCall,
529 llvm::Value *MemFnPtr, const MemberPointerType *MPT) {
547 llvm::Value *RawAdj = Builder.CreateExtractValue(MemFnPtr, 1, "memptr.adj");
550 llvm::Value *Adj = RawAdj;
556 llvm::Value *This = ThisAddr.getPointer();
557 llvm::Value *Ptr = Builder.CreateBitCast(This, Builder.getInt8PtrTy());
563 llvm::Value *FnAsInt = Builder.CreateExtractValue(MemFnPtr, 0, "memptr.ptr");
567 llvm::Value *IsVirtual;
585 llvm::Value *VTable =
589 llvm::Value *VTableOffset = FnAsInt;
596 llvm::Value *VirtualFn =
604 llvm::Value *NonVirtualFn =
615 /// Compute an l-value by applying the given pointer-to-member to a
617 llvm::Value *ItaniumCXXABI::EmitMemberDataPointerAddress(
618 CodeGenFunction &CGF, const Expr *E, Address Base, llvm::Value *MemPtr,
628 llvm::Value *Addr =
661 llvm::Value *
664 llvm::Value *src) {
688 llvm::Value *dst;
695 llvm::Value *null = llvm::Constant::getAllOnesValue(src->getType());
696 llvm::Value *isNull = Builder.CreateICmpEQ(src, null, "memptr.isnull");
707 llvm::Value *srcAdj = Builder.CreateExtractValue(src, 1, "src.adj");
708 llvm::Value *dstAdj;
871 llvm::Value *
873 llvm::Value *L,
874 llvm::Value *R,
892 // value, so it just comes down to bitwise equality.
906 llvm::Value *LPtr = Builder.CreateExtractValue(L, 0, "lhs.memptr.ptr");
907 llvm::Value *RPtr = Builder.CreateExtractValue(R, 0, "rhs.memptr.ptr");
911 llvm::Value *PtrEq = Builder.CreateICmp(Eq, LPtr, RPtr, "cmp.ptr");
916 llvm::Value *Zero = llvm::Constant::getNullValue(LPtr->getType());
917 llvm::Value *EqZero = Builder.CreateICmp(Eq, LPtr, Zero, "cmp.ptr.null");
921 llvm::Value *LAdj = Builder.CreateExtractValue(L, 1, "lhs.memptr.adj");
922 llvm::Value *RAdj = Builder.CreateExtractValue(R, 1, "rhs.memptr.adj");
923 llvm::Value *AdjEq = Builder.CreateICmp(Eq, LAdj, RAdj, "cmp.adj");
928 llvm::Value *One = llvm::ConstantInt::get(LPtr->getType(), 1);
931 llvm::Value *OrAdj = Builder.CreateOr(LAdj, RAdj, "or.adj");
932 llvm::Value *OrAdjAnd1 = Builder.CreateAnd(OrAdj, One);
933 llvm::Value *OrAdjAnd1EqZero = Builder.CreateICmp(Eq, OrAdjAnd1, Zero,
939 llvm::Value *Result = Builder.CreateBinOp(Or, EqZero, AdjEq);
945 llvm::Value *
947 llvm::Value *MemPtr,
954 llvm::Value *NegativeOne =
960 llvm::Value *Ptr = Builder.CreateExtractValue(MemPtr, 0, "memptr.ptr");
963 llvm::Value *Result = Builder.CreateICmpNE(Ptr, Zero, "memptr.tobool");
969 llvm::Value *Adj = Builder.CreateExtractValue(MemPtr, 1, "memptr.adj");
970 llvm::Value *VirtualBit = Builder.CreateAnd(Adj, One, "memptr.virtualbit");
971 llvm::Value *IsVirtual = Builder.CreateICmpNE(VirtualBit, Zero,
1016 llvm::Value *VTable =
1020 llvm::Value *OffsetPtr = CGF.Builder.CreateConstInBoundsGEP1_64(
1022 llvm::Value *Offset =
1026 llvm::Value *CompletePtr =
1109 llvm::Value *args[] = { ExceptionPtr, TypeInfo, Dtor };
1207 llvm::Value *Fn = getBadTypeidFn(CGF);
1212 llvm::Value *ItaniumCXXABI::EmitTypeid(CodeGenFunction &CGF,
1218 llvm::Value *Value =
1222 Value = CGF.Builder.CreateConstInBoundsGEP1_64(Value, -1ULL);
1223 return CGF.Builder.CreateAlignedLoad(Value, CGF.getPointerAlign());
1231 llvm::Value *ItaniumCXXABI::EmitDynamicCastCall(
1238 llvm::Value *SrcRTTI =
1240 llvm::Value *DestRTTI =
1246 llvm::Value *OffsetHint = llvm::ConstantInt::get(
1251 llvm::Value *Value = ThisAddr.getPointer();
1252 Value = CGF.EmitCastToVoidPtr(Value);
1254 llvm::Value *args[] = {Value, SrcRTTI, DestRTTI, OffsetHint};
1255 Value = CGF.EmitNounwindRuntimeCall(getItaniumDynamicCastFn(CGF), args);
1256 Value = CGF.Builder.CreateBitCast(Value, DestLTy);
1264 llvm::Value *IsNull = CGF.Builder.CreateIsNull(Value);
1271 return Value;
1274 llvm::Value *ItaniumCXXABI::EmitDynamicCastToVoid(CodeGenFunction &CGF,
1285 llvm::Value *VTable = CGF.GetVTablePtr(ThisAddr, PtrDiffLTy->getPointerTo(),
1289 llvm::Value *OffsetToTop =
1296 llvm::Value *Value = ThisAddr.getPointer();
1297 Value = CGF.EmitCastToVoidPtr(Value);
1298 Value = CGF.Builder.CreateInBoundsGEP(Value, OffsetToTop);
1300 return CGF.Builder.CreateBitCast(Value, DestLTy);
1304 llvm::Value *Fn = getBadCastFn(CGF);
1310 llvm::Value *
1315 llvm::Value *VTablePtr = CGF.GetVTablePtr(This, CGM.Int8PtrTy, ClassDecl);
1320 llvm::Value *VBaseOffsetPtr =
1326 llvm::Value *VBaseOffset =
1428 llvm::Value *VTT =
1441 llvm::Value *VTT = CGF.GetVTTParameter(GD, ForVirtualBase, Delegating);
1444 llvm::Value *Callee = nullptr;
1509 llvm::Value *ItaniumCXXABI::getVTableAddressPointInStructor(
1530 llvm::Value *Indices[] = {
1539 llvm::Value *ItaniumCXXABI::getVTableAddressPointInStructorWithVTT(
1550 llvm::Value *VTT = CGF.LoadCXXVTT();
1594 llvm::Value *ItaniumCXXABI::getVirtualFunctionPointer(CodeGenFunction &CGF,
1602 llvm::Value *VTable = CGF.GetVTablePtr(This, Ty, MethodDecl->getParent());
1609 llvm::Value *VFuncPtr =
1614 llvm::Value *ItaniumCXXABI::EmitVirtualDestructorCall(
1623 llvm::Value *Callee =
1651 static llvm::Value *performTypeAdjustment(CodeGenFunction &CGF,
1668 llvm::Value *ResultPtr;
1674 llvm::Value *VTablePtr = CGF.Builder.CreateLoad(VTablePtrPtr);
1676 llvm::Value *OffsetPtr =
1682 llvm::Value *Offset =
1702 llvm::Value *ItaniumCXXABI::performThisAdjustment(CodeGenFunction &CGF,
1710 llvm::Value *
1740 llvm::Value *NumElements,
1783 llvm::Value *ItaniumCXXABI::readArrayCookieImpl(CodeGenFunction &CGF,
1824 llvm::Value *numElements,
1834 llvm::Value *elementSize = llvm::ConstantInt::get(CGF.SizeTy,
1848 llvm::Value *ARMCXXABI::readArrayCookieImpl(CodeGenFunction &CGF,
2030 // This ABI instead only specifies the value bit 0 of the static guard
2033 llvm::Value *V =
2037 llvm::Value *isInitialized = Builder.CreateIsNull(V, "guard.uninitialized");
2050 llvm::Value *V
2112 llvm::Value *args[] = {
2173 llvm::Value *Val) {
2181 if (llvm::Value *V = CGM.getModule().getNamedValue(WrapperName))
2281 llvm::Value *Have = Builder.CreateIsNotNull(Init);
2295 llvm::Value *Val = Var;
2310 llvm::Value *Val = CGF.CGM.GetAddrOfGlobalVar(VD);
2431 /// \param Force - true to force the creation of this RTTI value
3108 /// ComputeVMIClassTypeInfoFlags - Compute the value of the flags member in
3549 static llvm::Value *CallBeginCatch(CodeGenFunction &CGF,
3550 llvm::Value *Exn,
3567 llvm::Value *Exn = CGF.getExceptionFromSlot();
3580 llvm::Value *AdjustedExn = CallBeginCatch(CGF, Exn, EndCatchMightThrow);
3584 // __cxa_begin_catch will actually return that pointer by value.
3589 // this by-value pointer and use the exception object instead.
3602 // might have the wrong adjustment, but we can't use the by-value
3620 llvm::Value *Casted = CGF.Builder.CreateBitCast(AdjustedExn, PtrTy);
3628 llvm::Value *ExnCast =
3637 llvm::Value *AdjustedExn = CallBeginCatch(CGF, Exn, false);
3640 // the pointer by value.
3642 llvm::Value *CastExn =
3666 llvm::Value *Cast = CGF.Builder.CreateBitCast(AdjustedExn, PtrTy);
3676 llvm::Value *ExnLoad = CGF.EmitLoadOfScalar(srcLV, Loc);
3696 llvm::Value *rawAdjustedExn = CallBeginCatch(CGF, Exn, true);
3731 // Undo the opaque value mapping.
3767 llvm::Value *Exn = CGF.getExceptionFromSlot();
3810 llvm::Value *exn = &*fn->arg_begin();
3832 llvm::Value *Exn) {