Proteus
Programmable JIT compilation and optimization for C/C++ using LLVM
Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Functions
CoreLLVM.h File Reference
#include "proteus/Error.h"
#include "proteus/TimeTracing.h"
#include "proteus/impl/Config.h"
#include "proteus/impl/Debug.h"
#include "proteus/impl/JITPassPluginRegistry.h"
#include "proteus/impl/Logger.h"
#include <llvm/Analysis/ValueTracking.h>
#include <llvm/CodeGen/CommandFlags.h>
#include <llvm/IR/Constants.h>
#include <llvm/IR/DebugInfo.h>
#include <llvm/IR/Metadata.h>
#include <llvm/IR/Module.h>
#include <llvm/IR/PassManager.h>
#include <llvm/Linker/Linker.h>
#include <llvm/MC/TargetRegistry.h>
#include <llvm/Passes/PassBuilder.h>
#include <llvm/Support/TargetSelect.h>
#include <llvm/Target/TargetMachine.h>
#include <llvm/Transforms/IPO/MergeFunctions.h>
#include <llvm/Transforms/IPO/GlobalDCE.h>
#include <llvm/Transforms/IPO/Internalize.h>
#include <llvm/Transforms/IPO/StripDeadPrototypes.h>
#include <llvm/Transforms/IPO/StripSymbols.h>
#include <llvm/Transforms/Utils/ModuleUtils.h>
#include <algorithm>
#include <optional>
#include <string>
#include <utility>
#include <vector>
Include dependency graph for CoreLLVM.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  proteus::InitLLVMTargets
 
struct  proteus::OptimizationPipelineConfig
 

Namespaces

namespace  proteus
 
namespace  proteus::detail
 

Macros

#define STRINGIFY_HELPER(x)   #x
 
#define STRINGIFY(x)   STRINGIFY_HELPER(x)
 

Functions

Expected< std::unique_ptr< TargetMachine > > proteus::detail::createTargetMachine (Module &M, StringRef Arch, unsigned OptLevel=3)
 
std::string proteus::detail::getDefaultOptimizationPipeline (char OptLevel)
 
std::string proteus::detail::composeOptimizationPassPipeline (std::optional< std::string > PassPipeline, char OptLevel, const std::vector< JITPassPluginConfig > &Plugins)
 
bool proteus::detail::hasJITPassPluginInsertion (const std::vector< JITPassPluginConfig > &Plugins)
 
std::vector< std::string > proteus::detail::getUniqueJITPassPluginPaths (const std::vector< JITPassPluginConfig > &Plugins)
 
std::vector< PassPlugin > proteus::detail::loadJITPassPlugins (const std::vector< JITPassPluginConfig > &Plugins)
 
void proteus::detail::runOptimizationPassPipeline (Module &M, StringRef Arch, const std::string &PassPipeline, unsigned CodegenOptLevel, const std::vector< JITPassPluginConfig > &Plugins={})
 
void proteus::detail::runOptimizationPassPipeline (Module &M, StringRef Arch, char OptLevel='3', unsigned CodegenOptLevel=3, const std::vector< JITPassPluginConfig > &Plugins={})
 
void proteus::optimizeIR (Module &M, StringRef Arch, const OptimizationPipelineConfig &OptConfig)
 
std::unique_ptr< Module > proteus::linkModules (LLVMContext &Ctx, SmallVector< std::unique_ptr< Module > > LinkedModules)
 
void proteus::pruneDanglingNVVMAnnotations (Module &M)
 
void proteus::runCleanupPassPipeline (Module &M)
 
void proteus::findFunctionsWithU64Metadata (llvm::Module &M, llvm::StringRef Key, llvm::SmallVectorImpl< std::pair< llvm::Function *, std::uint64_t > > &Out)
 
void proteus::findFunctionsWithU64Metadata (llvm::Module &M, llvm::StringRef Key, llvm::SmallVectorImpl< std::uint64_t > &Out)
 
bool proteus::hasU64Metadata (Function *F, StringRef Key)
 
void proteus::pruneIR (Module &M, bool UnsetExternallyInitialized=true)
 
void proteus::internalize (Module &M, StringRef PreserveFunctionName)
 
std::optional< uint64_t > proteus::getFunctionU64Metadata (Function &F, StringRef Key)
 

Macro Definition Documentation

◆ STRINGIFY

#define STRINGIFY (   x)    STRINGIFY_HELPER(x)

◆ STRINGIFY_HELPER

#define STRINGIFY_HELPER (   x)    #x