• Home
  • Raw
  • Download

Lines Matching refs:llvm

38 namespace llvm {
108 JumpDest(llvm::BasicBlock *Block, in JumpDest()
114 llvm::BasicBlock *getBlock() const { return Block; } in getBlock()
124 llvm::BasicBlock *Block;
132 typedef std::pair<llvm::Value *, llvm::Value *> ComplexPairTy;
138 void InsertHelper(llvm::Instruction *I, const llvm::Twine &Name,
139 llvm::BasicBlock *BB,
140 llvm::BasicBlock::iterator InsertPt) const;
149 llvm::Function *CurFn;
163 llvm::Value *ReturnValue;
167 llvm::AssertingVH<llvm::Instruction> AllocaInsertPt;
192 void setContextValue(llvm::Value *V) { ThisValue = V; } in setContextValue()
194 llvm::Value *getContextValue() const { return ThisValue; } in getContextValue()
219 llvm::SmallDenseMap<const VarDecl *, FieldDecl *> CaptureFields;
223 llvm::Value *ThisValue;
241 llvm::Value *BlockPointer;
243 llvm::DenseMap<const VarDecl *, FieldDecl *> LambdaCaptureFields;
248 llvm::DenseMap<const VarDecl *, llvm::Value *> NRVOFlags;
251 llvm::SmallVector<char, 256> LifetimeExtendedCleanupStack;
265 llvm::AllocaInst *NormalCleanupDest;
273 llvm::BasicBlock *EHResumeBlock;
277 llvm::Value *ExceptionSlot;
281 llvm::AllocaInst *EHSelectorSlot;
284 llvm::BasicBlock *EmitLandingPad();
286 llvm::BasicBlock *getInvokeDestImpl();
296 SmallVector<llvm::Value*, 8> ObjCEHValueStack;
304 llvm::Constant *BeginCatchFn;
308 llvm::AllocaInst *ForEHVar;
312 llvm::AllocaInst *SavedExnVar;
316 llvm::Constant *beginCatchFn, llvm::Constant *endCatchFn,
317 llvm::Constant *rethrowFn);
423 void PushDestructorCleanup(QualType T, llvm::Value *Addr);
429 llvm::Value *Addr);
444 llvm::Instruction *DominatingIP);
454 llvm::Instruction *DominatingIP);
567 void ResolveBranchFixups(llvm::BasicBlock *Target);
572 JumpDest getJumpDestInCurrentScope(llvm::BasicBlock *Target) { in getJumpDestInCurrentScope()
600 llvm::BasicBlock *getEHResumeBlock(bool isCleanup);
601 llvm::BasicBlock *getEHDispatchBlock(EHScopeStack::stable_iterator scope);
605 llvm::BasicBlock *StartBB;
625 llvm::BasicBlock *getStartingBlock() const { in getStartingBlock()
634 void setBeforeOutermostConditional(llvm::Value *value, llvm::Value *addr) { in setBeforeOutermostConditional()
636 llvm::BasicBlock *block = OutermostConditional->getStartingBlock(); in setBeforeOutermostConditional()
637 new llvm::StoreInst(value, addr, &block->back()); in setBeforeOutermostConditional()
666 llvm::Instruction *Inst;
802 llvm::Value *BuildBlockByrefAddress(llvm::Value *BaseAddr,
816 llvm::IndirectBrInst *IndirectBranch;
820 typedef llvm::DenseMap<const Decl*, llvm::Value*> DeclMapTy;
824 llvm::DenseMap<const LabelDecl*, JumpDest> LabelMap;
849 llvm::SwitchInst *SwitchInsn;
855 llvm::BasicBlock *CaseRangeBlock;
859 llvm::DenseMap<const OpaqueValueExpr *, LValue> OpaqueLValues;
860 llvm::DenseMap<const OpaqueValueExpr *, RValue> OpaqueRValues;
868 llvm::DenseMap<const Expr*, llvm::Value*> VLASizeMap;
872 llvm::BasicBlock *UnreachableBlock;
889 FieldConstructionScope(CodeGenFunction &CGF, llvm::Value *This) in FieldConstructionScope()
899 llvm::Value *OldCXXDefaultInitExprThis;
916 llvm::Value *OldCXXThisValue;
923 llvm::Value *CXXABIThisValue;
924 llvm::Value *CXXThisValue;
928 llvm::Value *CXXDefaultInitExprThis;
933 llvm::Value *CXXStructorImplicitParamValue;
949 llvm::DenseMap<const ValueDecl *, std::pair<llvm::Type *,
952 llvm::BasicBlock *TerminateLandingPad;
953 llvm::BasicBlock *TerminateHandler;
954 llvm::BasicBlock *TrapBB;
967 llvm::Function *Fn);
991 llvm::Value *getExceptionSlot();
992 llvm::Value *getEHSelectorSlot();
996 llvm::Value *getExceptionFromSlot();
997 llvm::Value *getSelectorFromSlot();
999 llvm::Value *getNormalCleanupDestSlot();
1001 llvm::BasicBlock *getUnreachableBlock() { in getUnreachableBlock()
1004 new llvm::UnreachableInst(getLLVMContext(), UnreachableBlock); in getUnreachableBlock()
1009 llvm::BasicBlock *getInvokeDest() { in getInvokeDest()
1015 llvm::LLVMContext &getLLVMContext() { return CGM.getLLVMContext(); } in getLLVMContext()
1021 typedef void Destroyer(CodeGenFunction &CGF, llvm::Value *addr, QualType ty);
1023 void pushIrregularPartialArrayCleanup(llvm::Value *arrayBegin,
1024 llvm::Value *arrayEndPointer,
1027 void pushRegularPartialArrayCleanup(llvm::Value *arrayBegin,
1028 llvm::Value *arrayEnd,
1033 llvm::Value *addr, QualType type);
1035 llvm::Value *addr, QualType type);
1036 void pushDestroy(CleanupKind kind, llvm::Value *addr, QualType type,
1038 void pushLifetimeExtendedDestroy(CleanupKind kind, llvm::Value *addr,
1041 void pushStackRestore(CleanupKind kind, llvm::Value *SPMem);
1042 void emitDestroy(llvm::Value *addr, QualType type, Destroyer *destroyer,
1044 llvm::Function *generateDestroyHelper(llvm::Constant *addr, QualType type,
1048 void emitArrayDestroy(llvm::Value *begin, llvm::Value *end,
1090 llvm::Constant *AtomicHelperFn);
1101 llvm::Constant *AtomicHelperFn);
1109 llvm::Value *EmitBlockLiteral(const BlockExpr *);
1110 llvm::Value *EmitBlockLiteral(const CGBlockInfo &Info);
1112 llvm::Constant *BuildDescriptorBlockDecl(const BlockExpr *,
1114 llvm::StructType *,
1115 llvm::Constant *BlockVarLayout);
1117 llvm::Function *GenerateBlockFunction(GlobalDecl GD,
1122 llvm::Constant *GenerateCopyHelperFunction(const CGBlockInfo &blockInfo);
1123 llvm::Constant *GenerateDestroyHelperFunction(const CGBlockInfo &blockInfo);
1124 llvm::Constant *GenerateObjCAtomicSetterCopyHelperFunction(
1126 llvm::Constant *GenerateObjCAtomicGetterCopyHelperFunction(
1128 llvm::Value *EmitBlockCopyAndAutorelease(llvm::Value *Block, QualType Ty);
1130 void BuildBlockRelease(llvm::Value *DeclPtr, BlockFieldFlags flags);
1137 llvm::Value *LoadBlockStruct() { in LoadBlockStruct()
1144 llvm::Value *GetAddrOfBlockDecl(const VarDecl *var, bool ByRef);
1145 llvm::Type *BuildByRefType(const VarDecl *var);
1147 void GenerateCode(GlobalDecl GD, llvm::Function *Fn,
1154 llvm::Function *Fn,
1164 void EmitBlockWithFallThrough(llvm::BasicBlock *BB, RegionCounter &Cnt);
1181 void StartThunk(llvm::Function *Fn, GlobalDecl GD, const CGFunctionInfo &FnInfo);
1183 void EmitCallAndReturnForThunk(GlobalDecl GD, llvm::Value *Callee,
1187 void GenerateThunk(llvm::Function *Fn, const CGFunctionInfo &FnInfo,
1190 void GenerateVarArgsThunk(llvm::Function *Fn, const CGFunctionInfo &FnInfo,
1207 typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBasesSetTy;
1219 llvm::Value *GetVTablePtr(llvm::Value *This, llvm::Type *Ty);
1249 llvm::Function *Fn,
1264 llvm::BasicBlock *getTerminateLandingPad();
1269 llvm::BasicBlock *getTerminateHandler();
1271 llvm::Type *ConvertTypeForMem(QualType T);
1272 llvm::Type *ConvertType(QualType T);
1273 llvm::Type *ConvertType(const TypeDecl *T) { in ConvertType()
1279 llvm::Value *LoadObjCSelf();
1297 llvm::BasicBlock *createBasicBlock(const Twine &name = "",
1298 llvm::Function *parent = nullptr,
1299 llvm::BasicBlock *before = nullptr) {
1301 return llvm::BasicBlock::Create(getLLVMContext(), "", parent, before);
1303 return llvm::BasicBlock::Create(getLLVMContext(), name, parent, before);
1314 void SimplifyForwardingBlocks(llvm::BasicBlock *BB);
1324 void EmitBlock(llvm::BasicBlock *BB, bool IsFinished=false);
1328 void EmitBlockAfterUses(llvm::BasicBlock *BB);
1338 void EmitBranch(llvm::BasicBlock *Block);
1363 LValue MakeAddrLValue(llvm::Value *V, QualType T,
1369 LValue MakeNaturalAlignAddrLValue(llvm::Value *V, QualType T) { in MakeNaturalAlignAddrLValue()
1380 llvm::AllocaInst *CreateTempAlloca(llvm::Type *Ty,
1384 void InitTempAlloca(llvm::AllocaInst *Alloca, llvm::Value *Value);
1391 llvm::AllocaInst *CreateIRTemp(QualType T, const Twine &Name = "tmp");
1395 llvm::AllocaInst *CreateMemTemp(QualType T, const Twine &Name = "tmp");
1413 llvm::Value *EmitCastToVoidPtr(llvm::Value *value);
1417 llvm::Value *EvaluateExprAsBool(const Expr *E);
1434 llvm::Value *EmitVAListRef(const Expr *E);
1442 void EmitAnyExprToMem(const Expr *E, llvm::Value *Location,
1463 void EmitAggregateAssign(llvm::Value *DestPtr, llvm::Value *SrcPtr, in EmitAggregateAssign()
1476 void EmitAggregateCopy(llvm::Value *DestPtr, llvm::Value *SrcPtr,
1486 llvm::Value *GetAddrOfLocalVar(const VarDecl *VD) { in GetAddrOfLocalVar()
1487 llvm::Value *Res = LocalDeclMap[VD]; in GetAddrOfLocalVar()
1497 llvm::DenseMap<const OpaqueValueExpr*,LValue>::iterator in getOpaqueLValueMapping()
1508 llvm::DenseMap<const OpaqueValueExpr*,RValue>::iterator in getOpaqueRValueMapping()
1516 static unsigned getAccessedFieldNo(unsigned Idx, const llvm::Constant *Elts);
1518 llvm::BlockAddress *GetAddrOfLabel(const LabelDecl *L);
1519 llvm::BasicBlock *GetIndirectGotoBlock();
1524 void EmitNullInitialization(llvm::Value *DestPtr, QualType Ty);
1530 llvm::Value *EmitVAArg(llvm::Value *VAListAddr, QualType Ty);
1534 llvm::Value *emitArrayLength(const ArrayType *arrayType,
1536 llvm::Value *&addr);
1548 std::pair<llvm::Value*,QualType> getVLASize(const VariableArrayType *vla);
1549 std::pair<llvm::Value*,QualType> getVLASize(QualType vla);
1553 llvm::Value *LoadCXXThis() { in LoadCXXThis()
1562 llvm::Value *LoadCXXVTT() { in LoadCXXVTT()
1569 llvm::Value *LoadCXXStructorImplicitParam() { in LoadCXXStructorImplicitParam()
1577 llvm::Value *
1578 GetAddressOfDirectBaseInCompleteClass(llvm::Value *Value,
1585 llvm::Value *GetAddressOfBaseClass(llvm::Value *Value,
1591 llvm::Value *GetAddressOfDerivedClass(llvm::Value *Value,
1601 llvm::Value *GetVTTParameter(GlobalDecl GD, bool ForVirtualBase,
1616 llvm::Value *This,
1621 llvm::Value *This, llvm::Value *Src,
1627 llvm::Value *ArrayPtr,
1633 llvm::Value *NumElements,
1634 llvm::Value *ArrayPtr,
1643 llvm::Value *This);
1646 llvm::Value *NewPtr, llvm::Value *NumElements,
1647 llvm::Value *AllocSizeWithoutCookie);
1650 llvm::Value *Ptr);
1652 llvm::Value *EmitCXXNewExpr(const CXXNewExpr *E);
1655 void EmitDeleteCall(const FunctionDecl *DeleteFD, llvm::Value *Ptr,
1661 llvm::Value* EmitCXXTypeidExpr(const CXXTypeidExpr *E);
1662 llvm::Value *EmitDynamicCast(llvm::Value *V, const CXXDynamicCastExpr *DCE);
1663 llvm::Value* EmitCXXUuidofExpr(const CXXUuidofExpr *E);
1698 void EmitTypeCheck(TypeCheckKind TCK, SourceLocation Loc, llvm::Value *V,
1704 void EmitBoundsCheck(const Expr *E, const Expr *Base, llvm::Value *Index,
1707 llvm::Value *EmitScalarPrePostIncDec(const UnaryOperator *E, LValue LV,
1727 void EmitScalarInit(llvm::Value *init, LValue lvalue);
1730 llvm::Value *Address);
1747 llvm::Value *Address;
1749 llvm::Value *NRVOFlag;
1759 llvm::Value *SizeForLifetimeMarkers;
1777 llvm::Value *getSizeForLifetimeMarkers() const { in getSizeForLifetimeMarkers()
1784 llvm::Value *getAllocatedAddress() const { in getAllocatedAddress()
1791 llvm::Value *getObjectAddress(CodeGenFunction &CGF) const { in getObjectAddress()
1806 llvm::GlobalValue::LinkageTypes Linkage);
1809 void EmitParmDecl(const VarDecl &D, llvm::Value *Arg, bool ArgIsPointer,
1847 llvm::Value *EmitCompoundStmt(const CompoundStmt &S, bool GetLast = false,
1849 llvm::Value *EmitCompoundStmtWithoutScope(const CompoundStmt &S,
1864 void EmitCondBrHints(llvm::LLVMContext &Context, llvm::BranchInst *CondBr,
1896 llvm::Function *EmitCapturedStmt(const CapturedStmt &S, CapturedRegionKind K);
1897 llvm::Function *GenerateCapturedStmtFunction(const CapturedStmt &S);
1898 llvm::Value *GenerateCapturedStmtArgument(const CapturedStmt &S);
1950 RValue convertTempToRValue(llvm::Value *addr, QualType type,
1962 llvm::Value *EmitToMemory(llvm::Value *Value, QualType Ty);
1966 llvm::Value *EmitFromMemory(llvm::Value *Value, QualType Ty);
1971 llvm::Value *EmitLoadOfScalar(llvm::Value *Addr, bool Volatile,
1974 llvm::MDNode *TBAAInfo = nullptr,
1982 llvm::Value *EmitLoadOfScalar(LValue lvalue, SourceLocation Loc);
1987 void EmitStoreOfScalar(llvm::Value *Value, llvm::Value *Addr,
1989 llvm::MDNode *TBAAInfo = nullptr, bool isInit = false,
1998 void EmitStoreOfScalar(llvm::Value *value, LValue lvalue, bool isInit=false);
2022 llvm::Value **Result=nullptr);
2028 llvm::Value *&Result);
2058 llvm::PointerIntPair<llvm::Constant*, 1, bool> ValueAndIsReference;
2059 ConstantEmission(llvm::Constant *C, bool isReference) in ConstantEmission()
2063 static ConstantEmission forReference(llvm::Constant *C) { in forReference()
2066 static ConstantEmission forValue(llvm::Constant *C) { in forValue()
2081 llvm::Constant *getValue() const { in getValue()
2093 llvm::Value *EmitIvarOffset(const ObjCInterfaceDecl *Interface,
2105 llvm::Value* Base, const ObjCIvarDecl *Ivar,
2119 void EmitDeclRefExprDbgValue(const DeclRefExpr *E, llvm::Constant *Init);
2132 llvm::Value *Callee,
2136 llvm::Instruction **callOrInvoke = nullptr);
2138 RValue EmitCall(QualType FnType, llvm::Value *Callee,
2147 llvm::CallInst *EmitRuntimeCall(llvm::Value *callee,
2149 llvm::CallInst *EmitRuntimeCall(llvm::Value *callee,
2150 ArrayRef<llvm::Value*> args,
2152 llvm::CallInst *EmitNounwindRuntimeCall(llvm::Value *callee,
2154 llvm::CallInst *EmitNounwindRuntimeCall(llvm::Value *callee,
2155 ArrayRef<llvm::Value*> args,
2158 llvm::CallSite EmitCallOrInvoke(llvm::Value *Callee,
2159 ArrayRef<llvm::Value *> Args,
2161 llvm::CallSite EmitCallOrInvoke(llvm::Value *Callee,
2163 llvm::CallSite EmitRuntimeCallOrInvoke(llvm::Value *callee,
2164 ArrayRef<llvm::Value*> args,
2166 llvm::CallSite EmitRuntimeCallOrInvoke(llvm::Value *callee,
2168 void EmitNoreturnRuntimeCallOrInvoke(llvm::Value *callee,
2169 ArrayRef<llvm::Value*> args);
2171 llvm::Value *BuildAppleKextVirtualCall(const CXXMethodDecl *MD,
2173 llvm::Type *Ty);
2175 llvm::Value *BuildAppleKextVirtualDestructorCall(const CXXDestructorDecl *DD,
2181 llvm::Value *Callee,
2183 llvm::Value *This,
2184 llvm::Value *ImplicitParam,
2193 llvm::Value *EmitCXXOperatorMemberCallee(const CXXOperatorCallExpr *E,
2195 llvm::Value *This);
2211 llvm::Value *EmitTargetBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
2213 llvm::Value *EmitAArch64CompareBuiltinExpr(llvm::Value *Op, llvm::Type *Ty,
2214 const llvm::CmpInst::Predicate Fp,
2215 const llvm::CmpInst::Predicate Ip,
2216 const llvm::Twine &Name = "");
2217 llvm::Value *EmitARMBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
2219 llvm::Value *EmitCommonNeonBuiltinExpr(unsigned BuiltinID,
2225 SmallVectorImpl<llvm::Value *> &Ops,
2226 llvm::Value *Align = nullptr);
2227 llvm::Function *LookupNeonLLVMIntrinsic(unsigned IntrinsicID,
2228 unsigned Modifier, llvm::Type *ArgTy,
2230 llvm::Value *EmitNeonCall(llvm::Function *F,
2231 SmallVectorImpl<llvm::Value*> &O,
2234 llvm::Value *EmitNeonSplat(llvm::Value *V, llvm::Constant *Idx);
2235 llvm::Value *EmitNeonShiftVector(llvm::Value *V, llvm::Type *Ty,
2237 llvm::Value *EmitNeonRShiftImm(llvm::Value *Vec, llvm::Value *Amt,
2238 llvm::Type *Ty, bool usgn, const char *name);
2240 llvm::Value *vectorWrapScalar8(llvm::Value *Op);
2241 llvm::Value *vectorWrapScalar16(llvm::Value *Op);
2242 llvm::Value *emitVectorWrappedScalar8Intrinsic(
2243 unsigned Int, SmallVectorImpl<llvm::Value *> &Ops, const char *Name);
2244 llvm::Value *emitVectorWrappedScalar16Intrinsic(
2245 unsigned Int, SmallVectorImpl<llvm::Value *> &Ops, const char *Name);
2246 llvm::Value *EmitAArch64BuiltinExpr(unsigned BuiltinID, const CallExpr *E);
2247 llvm::Value *EmitNeon64Call(llvm::Function *F,
2248 llvm::SmallVectorImpl<llvm::Value *> &O,
2251 llvm::Value *BuildVector(ArrayRef<llvm::Value*> Ops);
2252 llvm::Value *EmitX86BuiltinExpr(unsigned BuiltinID, const CallExpr *E);
2253 llvm::Value *EmitPPCBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
2254 llvm::Value *EmitR600BuiltinExpr(unsigned BuiltinID, const CallExpr *E);
2256 llvm::Value *EmitObjCProtocolExpr(const ObjCProtocolExpr *E);
2257 llvm::Value *EmitObjCStringLiteral(const ObjCStringLiteral *E);
2258 llvm::Value *EmitObjCBoxedExpr(const ObjCBoxedExpr *E);
2259 llvm::Value *EmitObjCArrayLiteral(const ObjCArrayLiteral *E);
2260 llvm::Value *EmitObjCDictionaryLiteral(const ObjCDictionaryLiteral *E);
2261 llvm::Value *EmitObjCCollectionLiteral(const Expr *E,
2263 llvm::Value *EmitObjCSelectorExpr(const ObjCSelectorExpr *E);
2275 void EmitARCInitWeak(llvm::Value *value, llvm::Value *addr);
2276 void EmitARCDestroyWeak(llvm::Value *addr);
2277 llvm::Value *EmitARCLoadWeak(llvm::Value *addr);
2278 llvm::Value *EmitARCLoadWeakRetained(llvm::Value *addr);
2279 llvm::Value *EmitARCStoreWeak(llvm::Value *value, llvm::Value *addr,
2281 void EmitARCCopyWeak(llvm::Value *dst, llvm::Value *src);
2282 void EmitARCMoveWeak(llvm::Value *dst, llvm::Value *src);
2283 llvm::Value *EmitARCRetainAutorelease(QualType type, llvm::Value *value);
2284 llvm::Value *EmitARCRetainAutoreleaseNonBlock(llvm::Value *value);
2285 llvm::Value *EmitARCStoreStrong(LValue lvalue, llvm::Value *value,
2287 llvm::Value *EmitARCStoreStrongCall(llvm::Value *addr, llvm::Value *value,
2289 llvm::Value *EmitARCRetain(QualType type, llvm::Value *value);
2290 llvm::Value *EmitARCRetainNonBlock(llvm::Value *value);
2291 llvm::Value *EmitARCRetainBlock(llvm::Value *value, bool mandatory);
2292 void EmitARCDestroyStrong(llvm::Value *addr, ARCPreciseLifetime_t precise);
2293 void EmitARCRelease(llvm::Value *value, ARCPreciseLifetime_t precise);
2294 llvm::Value *EmitARCAutorelease(llvm::Value *value);
2295 llvm::Value *EmitARCAutoreleaseReturnValue(llvm::Value *value);
2296 llvm::Value *EmitARCRetainAutoreleaseReturnValue(llvm::Value *value);
2297 llvm::Value *EmitARCRetainAutoreleasedReturnValue(llvm::Value *value);
2299 std::pair<LValue,llvm::Value*>
2301 std::pair<LValue,llvm::Value*>
2304 llvm::Value *EmitObjCThrowOperand(const Expr *expr);
2306 llvm::Value *EmitObjCProduceObject(QualType T, llvm::Value *Ptr);
2307 llvm::Value *EmitObjCConsumeObject(QualType T, llvm::Value *Ptr);
2308 llvm::Value *EmitObjCExtendObjectLifetime(QualType T, llvm::Value *Ptr);
2310 llvm::Value *EmitARCExtendBlockObject(const Expr *expr);
2311 llvm::Value *EmitARCRetainScalarExpr(const Expr *expr);
2312 llvm::Value *EmitARCRetainAutoreleaseScalarExpr(const Expr *expr);
2314 void EmitARCIntrinsicUse(ArrayRef<llvm::Value*> values);
2320 void EmitObjCAutoreleasePoolPop(llvm::Value *Ptr);
2321 llvm::Value *EmitObjCAutoreleasePoolPush();
2322 llvm::Value *EmitObjCMRRAutoreleasePoolPush();
2323 void EmitObjCAutoreleasePoolCleanup(llvm::Value *Ptr);
2324 void EmitObjCMRRAutoreleasePoolPop(llvm::Value *Ptr);
2337 llvm::Value *EmitScalarExpr(const Expr *E , bool IgnoreResultAssign = false);
2341 llvm::Value *EmitScalarConversion(llvm::Value *Src, QualType SrcTy,
2347 llvm::Value *EmitComplexToScalarConversion(ComplexPairTy Src, QualType SrcTy,
2362 void EmitGCMemmoveCollectable(llvm::Value *DestPtr, llvm::Value *SrcPtr,
2367 void EmitExtendGCLifetime(llvm::Value *object);
2387 llvm::Constant *CreateStaticVarDecl(const VarDecl &D,
2389 llvm::GlobalValue::LinkageTypes Linkage);
2395 llvm::GlobalVariable *
2397 llvm::GlobalVariable *GV);
2402 void EmitCXXGlobalVarDeclInit(const VarDecl &D, llvm::Constant *DeclPtr,
2407 void registerGlobalDtorWithAtExit(const VarDecl &D, llvm::Constant *fn,
2408 llvm::Constant *addr);
2415 void EmitCXXGuardedInit(const VarDecl &D, llvm::GlobalVariable *DeclPtr,
2420 void GenerateCXXGlobalInitFunc(llvm::Function *Fn,
2421 ArrayRef<llvm::Constant *> Decls,
2422 llvm::GlobalVariable *Guard = nullptr);
2426 void GenerateCXXGlobalDtorsFunc(llvm::Function *Fn,
2427 const std::vector<std::pair<llvm::WeakVH,
2428 llvm::Constant*> > &DtorsAndObjects);
2430 void GenerateCXXGlobalVarDeclInitFunc(llvm::Function *Fn,
2432 llvm::GlobalVariable *Addr,
2437 void EmitSynthesizedCXXCopyCtor(llvm::Value *Dest, llvm::Value *Src,
2450 RValue EmitAtomicExpr(AtomicExpr *E, llvm::Value *Dest = nullptr);
2457 llvm::Value *EmitAnnotationCall(llvm::Value *AnnotationFn,
2458 llvm::Value *AnnotatedVal,
2463 void EmitVarAnnotations(const VarDecl *D, llvm::Value *V);
2467 llvm::Value *EmitFieldAnnotations(const FieldDecl *D, llvm::Value *V);
2491 bool ConstantFoldsToSimpleInteger(const Expr *Cond, llvm::APSInt &Result);
2498 void EmitBranchOnBoolExpr(const Expr *Cond, llvm::BasicBlock *TrueBlock,
2499 llvm::BasicBlock *FalseBlock, uint64_t TrueCount);
2503 llvm::Constant *EmitCheckTypeDescriptor(QualType T);
2507 llvm::Value *EmitCheckValue(llvm::Value *V);
2511 llvm::Constant *EmitCheckSourceLocation(SourceLocation Loc);
2526 void EmitCheck(llvm::Value *Checked, StringRef CheckName,
2527 ArrayRef<llvm::Constant *> StaticArgs,
2528 ArrayRef<llvm::Value *> DynamicArgs,
2533 void EmitTrapCheck(llvm::Value *Checked);
2546 void SetFPAccuracy(llvm::Value *Val, float Accuracy);
2549 llvm::MDNode *getRangeForLoadFromType(QualType Ty);
2552 void deferPlaceholderReplacement(llvm::Instruction *Old, llvm::Value *New);
2554 llvm::SmallVector<std::pair<llvm::Instruction *, llvm::Value *>, 4>
2563 llvm::Function::arg_iterator
2565 llvm::Function::arg_iterator AI);
2571 SmallVectorImpl<llvm::Value *> &Args,
2572 llvm::FunctionType *IRFuncTy);
2574 llvm::Value* EmitAsmInput(const TargetInfo::ConstraintInfo &Info,
2577 llvm::Value* EmitAsmInputLValue(const TargetInfo::ConstraintInfo &Info,
2665 buildByrefHelpers(llvm::StructType &byrefType,
2668 void AddObjCARCExceptionMetadata(llvm::Instruction *Inst);
2672 std::pair<llvm::Value*, unsigned> EmitPointerWithAlignment(const Expr *Addr);
2678 typedef llvm::PointerIntPair<llvm::Value*, 1, bool> saved_type;
2681 static bool needsSaving(llvm::Value *value) { in needsSaving()
2683 if (!isa<llvm::Instruction>(value)) return false; in needsSaving()
2686 llvm::BasicBlock *block = cast<llvm::Instruction>(value)->getParent(); in needsSaving()
2691 static saved_type save(CodeGenFunction &CGF, llvm::Value *value) { in save()
2695 llvm::Value *alloca = in save()
2702 static llvm::Value *restore(CodeGenFunction &CGF, saved_type value) { in restore()
2724 llvm::Value *Value;
2726 saved_type(llvm::Value *v, Kind k) : Value(v), K(k) {}