Lines Matching defs:FunctionStackPoisoner
599 struct FunctionStackPoisoner : public InstVisitor<FunctionStackPoisoner> { struct
600 Function &F;
601 AddressSanitizer &ASan;
602 DIBuilder DIB;
603 LLVMContext *C;
604 Type *IntptrTy;
605 Type *IntptrPtrTy;
606 ShadowMapping Mapping;
608 SmallVector<AllocaInst *, 16> AllocaVec;
609 SmallSetVector<AllocaInst *, 16> NonInstrumentedStaticAllocaVec;
610 SmallVector<Instruction *, 8> RetVec;
611 unsigned StackAlignment;
613 Function *AsanStackMallocFunc[kMaxAsanStackMallocSizeClass + 1],
614 *AsanStackFreeFunc[kMaxAsanStackMallocSizeClass + 1];
615 Function *AsanPoisonStackMemoryFunc, *AsanUnpoisonStackMemoryFunc;
616 Function *AsanAllocaPoisonFunc, *AsanAllocasUnpoisonFunc;
619 struct AllocaPoisonCall {
625 SmallVector<AllocaPoisonCall, 8> AllocaPoisonCallVec;
627 SmallVector<AllocaInst *, 1> DynamicAllocaVec;
628 SmallVector<IntrinsicInst *, 1> StackRestoreVec;
629 AllocaInst *DynamicAllocaLayout = nullptr;
630 IntrinsicInst *LocalEscapeCall = nullptr;
633 typedef DenseMap<Value *, AllocaInst *> AllocaForValueMapTy;
634 AllocaForValueMapTy AllocaForValue;
636 bool HasNonEmptyInlineAsm = false;
637 bool HasReturnsTwiceCall = false;
638 std::unique_ptr<CallInst> EmptyInlineAsm;
640 FunctionStackPoisoner(Function &F, AddressSanitizer &ASan) in FunctionStackPoisoner() function
651 bool runOnFunction() { in runOnFunction()
677 void visitReturnInst(ReturnInst &RI) { RetVec.push_back(&RI); } in visitReturnInst()
679 void unpoisonDynamicAllocasBeforeInst(Instruction *InstBefore, in unpoisonDynamicAllocasBeforeInst()
703 void unpoisonDynamicAllocas() { in unpoisonDynamicAllocas()
725 void visitAllocaInst(AllocaInst &AI) { in visitAllocaInst()
740 void visitIntrinsicInst(IntrinsicInst &II) { in visitIntrinsicInst()
767 void visitCallSite(CallSite CS) { in visitCallSite()
779 bool doesDominateAllExits(const Instruction *I) const { in doesDominateAllExits()