Lines Matching defs:FunctionStackPoisoner

835 struct FunctionStackPoisoner : public InstVisitor<FunctionStackPoisoner> {  struct
836 Function &F;
837 AddressSanitizer &ASan;
838 DIBuilder DIB;
839 LLVMContext *C;
840 Type *IntptrTy;
841 Type *IntptrPtrTy;
842 ShadowMapping Mapping;
844 SmallVector<AllocaInst *, 16> AllocaVec;
845 SmallVector<AllocaInst *, 16> StaticAllocasToMoveUp;
846 SmallVector<Instruction *, 8> RetVec;
847 unsigned StackAlignment;
849 Function *AsanStackMallocFunc[kMaxAsanStackMallocSizeClass + 1],
850 *AsanStackFreeFunc[kMaxAsanStackMallocSizeClass + 1];
851 Function *AsanSetShadowFunc[0x100] = {};
852 Function *AsanPoisonStackMemoryFunc, *AsanUnpoisonStackMemoryFunc;
853 Function *AsanAllocaPoisonFunc, *AsanAllocasUnpoisonFunc;
856 struct AllocaPoisonCall {
862 SmallVector<AllocaPoisonCall, 8> DynamicAllocaPoisonCallVec;
863 SmallVector<AllocaPoisonCall, 8> StaticAllocaPoisonCallVec;
865 SmallVector<AllocaInst *, 1> DynamicAllocaVec;
866 SmallVector<IntrinsicInst *, 1> StackRestoreVec;
867 AllocaInst *DynamicAllocaLayout = nullptr;
868 IntrinsicInst *LocalEscapeCall = nullptr;
871 using AllocaForValueMapTy = DenseMap<Value *, AllocaInst *>;
872 AllocaForValueMapTy AllocaForValue;
874 bool HasNonEmptyInlineAsm = false;
875 bool HasReturnsTwiceCall = false;
876 std::unique_ptr<CallInst> EmptyInlineAsm;
878 FunctionStackPoisoner(Function &F, AddressSanitizer &ASan) in FunctionStackPoisoner() function
889 bool runOnFunction() { in runOnFunction()
926 void visitReturnInst(ReturnInst &RI) { RetVec.push_back(&RI); } in visitReturnInst()
929 void visitResumeInst(ResumeInst &RI) { RetVec.push_back(&RI); } in visitResumeInst()
932 void visitCleanupReturnInst(CleanupReturnInst &CRI) { RetVec.push_back(&CRI); } in visitCleanupReturnInst()
934 void unpoisonDynamicAllocasBeforeInst(Instruction *InstBefore, in unpoisonDynamicAllocasBeforeInst()
958 void unpoisonDynamicAllocas() { in unpoisonDynamicAllocas()
980 void visitAllocaInst(AllocaInst &AI) { in visitAllocaInst()
1002 void visitIntrinsicInst(IntrinsicInst &II) { in visitIntrinsicInst()
1032 void visitCallSite(CallSite CS) { in visitCallSite()
1045 bool doesDominateAllExits(const Instruction *I) const { in doesDominateAllExits()