23 #ifndef SVF_FE_BASIC_TYPES_H
24 #define SVF_FE_BASIC_TYPES_H
28 #include <llvm/Pass.h>
30 #include <llvm/IR/Instructions.h>
31 #include <llvm/IR/GetElementPtrTypeIterator.h>
32 #include <llvm/IR/GlobalVariable.h>
33 #include <llvm/IR/BasicBlock.h>
34 #include <llvm/IR/IntrinsicInst.h>
35 #include <llvm/IR/LLVMContext.h>
36 #include <llvm/IR/Metadata.h>
37 #include <llvm/IR/DataLayout.h>
38 #include <llvm/IR/IRBuilder.h>
39 #include <llvm/IR/DebugInfo.h>
40 #include <llvm/IR/InstIterator.h>
41 #include <llvm/IR/GetElementPtrTypeIterator.h>
42 #include <llvm/IR/DerivedTypes.h>
43 #include <llvm/IR/Statepoint.h>
44 #include <llvm/IR/Intrinsics.h>
46 #include <llvm/Analysis/MemoryLocation.h>
47 #include <llvm/Analysis/DominanceFrontier.h>
48 #include <llvm/Analysis/PostDominators.h>
49 #include <llvm/Analysis/ScalarEvolution.h>
50 #include <llvm/Analysis/ScalarEvolutionExpressions.h>
52 #include <llvm/Transforms/Utils/UnifyFunctionExitNodes.h>
54 #include <llvm/Support/SourceMgr.h>
56 #include <llvm/Bitcode/BitcodeWriter.h>
57 #include <llvm/Bitcode/BitcodeReader.h>
58 #include <llvm/IRReader/IRReader.h>
59 #include <llvm/IR/InstVisitor.h>
60 #include <llvm/IR/InstIterator.h>
62 #include <llvm/BinaryFormat/Dwarf.h>
64 #include <llvm/Analysis/LoopInfo.h>
65 #include <llvm/Demangle/Demangle.h>
75 #if LLVM_VERSION_MAJOR >= 12
189 #if LLVM_VERSION_MAJOR >= 13
190 typedef llvm::IntrinsicInst IntrinsicInst;
191 typedef llvm::DbgInfoIntrinsic DbgInfoIntrinsic;
192 typedef llvm::DbgVariableIntrinsic DbgVariableIntrinsic;
193 typedef llvm::DbgDeclareInst DbgDeclareInst;
194 typedef llvm::DbgInfoIntrinsic DbgInfoIntrinsic;
195 typedef llvm::DbgValueInst DbgValueInst;
196 typedef llvm::DbgLabelInst DbgLabelInst;
197 typedef llvm::VPIntrinsic VPIntrinsic;
198 typedef llvm::ConstrainedFPIntrinsic ConstrainedFPIntrinsic;
199 typedef llvm::ConstrainedFPCmpIntrinsic ConstrainedFPCmpIntrinsic;
200 typedef llvm::MinMaxIntrinsic MinMaxIntrinsic;
201 typedef llvm::BinaryOpIntrinsic BinaryOpIntrinsic;
202 typedef llvm::WithOverflowInst WithOverflowInst;
203 typedef llvm::SaturatingInst SaturatingInst;
204 typedef llvm::AtomicMemIntrinsic AtomicMemIntrinsic;
205 typedef llvm::AtomicMemSetInst AtomicMemSetInst;
206 typedef llvm::AtomicMemTransferInst AtomicMemTransferInst;
207 typedef llvm::AtomicMemCpyInst AtomicMemCpyInst;
208 typedef llvm::AtomicMemMoveInst AtomicMemMoveInst;
209 typedef llvm::MemIntrinsic MemIntrinsic;
210 typedef llvm::MemSetInst MemSetInst;
211 typedef llvm::MemTransferInst MemTransferInst;
212 typedef llvm::MemCpyInst MemCpyInst;
213 typedef llvm::MemMoveInst MemMoveInst;
214 typedef llvm::MemCpyInlineInst MemCpyInlineInst;
215 typedef llvm::AnyMemIntrinsic AnyMemIntrinsic;
216 typedef llvm::AnyMemSetInst AnyMemSetInst;
217 typedef llvm::AnyMemTransferInst AnyMemTransferInst;
218 typedef llvm::AnyMemCpyInst AnyMemCpyInst;
219 typedef llvm::AnyMemMoveInst AnyMemMoveInst;
223 typedef llvm::InstrProfIncrementInst InstrProfIncrementInst;
224 typedef llvm::InstrProfIncrementInstStep InstrProfIncrementInstStep;
225 typedef llvm::InstrProfValueProfileInst InstrProfValueProfileInst;
226 typedef llvm::PseudoProbeInst PseudoProbeInst;
227 typedef llvm::NoAliasScopeDeclInst NoAliasScopeDeclInst;
228 typedef llvm::GCStatepointInst GCStatepointInst;
229 typedef llvm::GCProjectionInst GCProjectionInst;
230 typedef llvm::GCRelocateInst GCRelocateInst;
231 typedef llvm::GCResultInst GCResultInst;
232 typedef llvm::AssumeInst AssumeInst;
246 namespace dwarf = llvm::dwarf;
268 #if (LLVM_VERSION_MAJOR >= 9)
269 typedef llvm::FunctionCallee FunctionCallee;
273 #if LLVM_VERSION_MAJOR >= 11
llvm::const_inst_iterator const_inst_iterator
llvm::DataLayout DataLayout
llvm::IntToPtrInst IntToPtrInst
llvm::DISubroutineType DISubroutineType
llvm::GlobalVariable GlobalVariable
llvm::VACopyInst VACopyInst
llvm::DINodeArray DINodeArray
llvm::GlobalAlias GlobalAlias
llvm::ArrayType ArrayType
llvm::raw_fd_ostream raw_fd_ostream
LLVM outputs.
llvm::VectorType VectorType
llvm::BasicBlock BasicBlock
llvm::inst_iterator inst_iterator
std::pair< const BasicBlock *, const ConstantInt * > SuccBBAndCondValPair
llvm::UnaryOperator UnaryOperator
llvm::ConstantStruct ConstantStruct
llvm::StructType StructType
LLVM types.
llvm::DominanceFrontierBase< llvm::BasicBlock, false > DominanceFrontierBase
llvm::NamedMDNode NamedMDNode
LLVM metadata and debug information.
llvm::MemoryLocation MemoryLocation
llvm::succ_const_iterator succ_const_iterator
LLVM Iterators.
llvm::bridge_gep_iterator bridge_gep_iterator
llvm::AllocaInst AllocaInst
llvm::IntegerType IntegerType
llvm::SwitchInst SwitchInst
llvm::AtomicRMWInst AtomicRMWInst
llvm::InsertValueInst InsertValueInst
llvm::SCEVAddRecExpr SCEVAddRecExpr
llvm::StructLayout StructLayout
llvm::InvokeInst InvokeInst
llvm::AtomicCmpXchgInst AtomicCmpXchgInst
llvm::ConstantArray ConstantArray
llvm::DebugInfoFinder DebugInfoFinder
llvm::const_pred_iterator const_pred_iterator
llvm::FenceInst FenceInst
llvm::ShuffleVectorInst ShuffleVectorInst
llvm::GlobalValue GlobalValue
llvm::InsertElementInst InsertElementInst
llvm::FunctionType FunctionType
llvm::ConstantData ConstantData
llvm::MetadataAsValue MetadataAsValue
llvm::Instruction Instruction
llvm::ConstantAggregate ConstantAggregate
llvm::DomTreeNode DomTreeNode
llvm::DIDerivedType DIDerivedType
llvm::SMDiagnostic SMDiagnostic
llvm::GEPOperator GEPOperator
llvm::DISubprogram DISubprogram
llvm::UnreachableInst UnreachableInst
llvm::ConstantDataSequential ConstantDataSequential
llvm::ConstantAggregateZero ConstantAggregateZero
llvm::ResumeInst ResumeInst
std::vector< SuccBBAndCondValPair > SuccBBAndCondValPairVec
llvm::Value Value
LLVM Basic classes.
llvm::ConstantPointerNull ConstantPointerNull
llvm::ConstantExpr ConstantExpr
llvm::IRBuilder IRBuilder
llvm::BlockAddress BlockAddress
llvm::FreezeInst FreezeInst
llvm::DISubrange DISubrange
llvm::DITypeRefArray DITypeRefArray
llvm::ScalarEvolutionWrapperPass ScalarEvolutionWrapperPass
llvm::gep_type_iterator gep_type_iterator
llvm::PointerType PointerType
llvm::GlobalIFunc GlobalIFunc
llvm::BinaryOperator BinaryOperator
llvm::PostDominatorTree PostDominatorTree
llvm::DominanceFrontier DominanceFrontier
llvm::StoreInst StoreInst
llvm::SelectInst SelectInst
llvm::VAArgInst VAArgInst
llvm::SCEVConstant SCEVConstant
llvm::Loop Loop
LLVM Loop.
llvm::ModulePass ModulePass
llvm::GetElementPtrInst GetElementPtrInst
llvm::CallBrInst CallBrInst
llvm::ReturnInst ReturnInst
llvm::BranchInst BranchInst
llvm::ExtractValueInst ExtractValueInst
llvm::ConstantFP ConstantFP
llvm::ScalarEvolution ScalarEvolution
llvm::VAStartInst VAStartInst
llvm::ConstantDataArray ConstantDataArray
llvm::DIBasicType DIBasicType
llvm::VAEndInst VAEndInst
llvm::DICompositeType DICompositeType
llvm::ConstantInt ConstantInt
llvm::UnifyFunctionExitNodes UnifyFunctionExitNodes
llvm::DominatorTree DominatorTree
LLVM Dominators.
llvm::GlobalObject GlobalObject
llvm::UndefValue UndefValue
llvm::LandingPadInst LandingPadInst
llvm::ExtractElementInst ExtractElementInst
llvm::BitCastInst BitCastInst
llvm::LLVMContext LLVMContext