1 #ifndef HALIDE_LLVM_HEADERS_H 2 #define HALIDE_LLVM_HEADERS_H 4 #if LLVM_VERSION >= 140 7 #error "Compiling Halide requires LLVM 14.0 or newer" 12 #pragma warning(push, 0) 15 #pragma GCC system_header 18 #pragma clang system_header 23 #if WITH_WABT || WITH_V8 24 #include <lld/Common/Driver.h> 25 #if LLVM_VERSION >= 170 26 #include <lld/Common/ErrorHandler.h> 29 #include <llvm/ADT/APFloat.h> 30 #include <llvm/ADT/ArrayRef.h> 31 #include <llvm/ADT/SmallVector.h> 32 #include <llvm/ADT/StringMap.h> 33 #include <llvm/ADT/StringRef.h> 34 #if LLVM_VERSION < 170 35 #include <llvm/ADT/Triple.h> 37 #include <llvm/ADT/Twine.h> 38 #include <llvm/Analysis/AliasAnalysis.h> 39 #include <llvm/Analysis/TargetLibraryInfo.h> 40 #include <llvm/Analysis/TargetTransformInfo.h> 41 #include <llvm/Bitcode/BitcodeReader.h> 42 #include <llvm/Bitcode/BitcodeWriter.h> 43 #include <llvm/ExecutionEngine/Orc/LLJIT.h> 44 #include <llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h> 45 #include <llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h> 46 #include <llvm/ExecutionEngine/SectionMemoryManager.h> 47 #include <llvm/IR/Constant.h> 48 #include <llvm/IR/Constants.h> 49 #include <llvm/IR/DataLayout.h> 50 #include <llvm/IR/DerivedTypes.h> 51 #include <llvm/IR/Function.h> 52 #include <llvm/IR/GlobalValue.h> 53 #include <llvm/IR/GlobalVariable.h> 54 #include <llvm/IR/IRBuilder.h> 55 #include <llvm/IR/InlineAsm.h> 56 #include <llvm/IR/Instructions.h> 57 #include <llvm/IR/Intrinsics.h> 59 #include <llvm/IR/IntrinsicsHexagon.h> 61 #include <llvm/IR/LegacyPassManager.h> 62 #include <llvm/IR/MDBuilder.h> 63 #include <llvm/IR/Metadata.h> 64 #include <llvm/IR/Module.h> 65 #include <llvm/IR/PassTimingInfo.h> 66 #include <llvm/IR/Type.h> 67 #include <llvm/IR/Value.h> 68 #include <llvm/IR/Verifier.h> 69 #include <llvm/Linker/Linker.h> 70 #include <llvm/MC/MCTargetOptions.h> 71 #include <llvm/MC/TargetRegistry.h> 72 #include <llvm/Object/ArchiveWriter.h> 73 #include <llvm/Object/ObjectFile.h> 74 #include <llvm/Passes/PassBuilder.h> 75 #include <llvm/Support/Casting.h> 76 #include <llvm/Support/CodeGen.h> 77 #include <llvm/Support/CommandLine.h> 78 #include <llvm/Support/DataExtractor.h> 79 #include <llvm/Support/DynamicLibrary.h> 80 #include <llvm/Support/ErrorHandling.h> 81 #include <llvm/Support/FileSystem.h> 82 #include <llvm/Support/FormattedStream.h> 83 #include <llvm/Support/TargetSelect.h> 84 #include <llvm/Support/TypeSize.h> 85 #include <llvm/Support/raw_os_ostream.h> 86 #include <llvm/Support/raw_ostream.h> 87 #include <llvm/Target/TargetMachine.h> 88 #include <llvm/Target/TargetOptions.h> 89 #if LLVM_VERSION >= 170 90 #include <llvm/TargetParser/Triple.h> 92 #include <llvm/Transforms/IPO.h> 93 #include <llvm/Transforms/IPO/AlwaysInliner.h> 94 #include <llvm/Transforms/IPO/Inliner.h> 95 #if LLVM_VERSION < 170 96 #include <llvm/Transforms/IPO/PassManagerBuilder.h> 98 #include <llvm/Transforms/Instrumentation.h> 99 #include <llvm/Transforms/Instrumentation/AddressSanitizer.h> 100 #include <llvm/Transforms/Instrumentation/SanitizerCoverage.h> 101 #include <llvm/Transforms/Instrumentation/ThreadSanitizer.h> 102 #include <llvm/Transforms/Scalar/GVN.h> 103 #include <llvm/Transforms/Utils/ModuleUtils.h> 104 #include <llvm/Transforms/Utils/SymbolRewriter.h> 105 #if LLVM_VERSION >= 180 106 #include <llvm/Transforms/Utils/RelLookupTableConverter.h> 132 return f->getName().str();
136 return f.getName().str();
140 return llvm::StructType::getTypeByName(module->getContext(), name);
std::string get_llvm_function_name(const llvm::Function *f)
This file defines the class FunctionDAG, which is our representation of a Halide pipeline, and contains methods to using Halide's bounds tools to query properties of it.
llvm::StructType * get_llvm_struct_type_by_name(llvm::Module *module, const char *name)
auto iterator_to_pointer(T iter) -> decltype(&*std::declval< T >())
Not visible externally, similar to 'static' linkage in C.