Proteus
Programmable JIT compilation and optimization for C/C++ using LLVM
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
KernelArgVisitor.h File Reference
#include "Helpers.h"
#include "KernelArgPtrUseVisitor.h"
#include "proteus/CompilerInterfaceTypes.h"
#include "proteus/impl/Logger.h"
#include "proteus/impl/RuntimeConstantTypeHelpers.h"
#include <llvm/Analysis/PtrUseVisitor.h>
#include <llvm/Analysis/ValueTracking.h>
#include <llvm/ADT/DenseMap.h>
#include <llvm/ADT/DenseSet.h>
#include <llvm/ADT/Hashing.h>
#include <llvm/ADT/SmallPtrSet.h>
#include <llvm/ADT/SmallVector.h>
#include <llvm/IR/CFG.h>
#include <llvm/IR/Constants.h>
#include <llvm/IR/DataLayout.h>
#include <llvm/IR/DebugInfo.h>
#include <llvm/IR/Function.h>
#include <llvm/IR/InstrTypes.h>
#include <llvm/IR/Instruction.h>
#include <llvm/IR/Instructions.h>
#include <llvm/IR/Metadata.h>
#include <llvm/IR/Module.h>
#include <llvm/IR/PassManager.h>
#include <llvm/IR/Type.h>
#include <memory>
#include <optional>
Include dependency graph for KernelArgVisitor.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  proteus::ReachingPointerStores
 
struct  proteus::LambdaKernelArgAnalysis
 
struct  proteus::FunctionAnalysis
 
struct  proteus::WorkItem
 
class  proteus::LambdaArgVisitor
 

Namespaces

namespace  proteus
 

Functions

std::optional< ReturnInst * > proteus::getRetInst (Function &F)
 
int64_t proteus::getValueIndicesOffset (const DataLayout &DL, Type *AggTy, ArrayRef< unsigned > Indices)
 
bool proteus::isSamePointerAddress (const DataLayout &DL, Value *LHS, Value *RHS)
 
void proteus::collectReachingPointerStores (const DataLayout &DL, BasicBlock *BB, Instruction *Before, Value *Address, SmallPtrSetImpl< BasicBlock * > &Visited, ReachingPointerStores &Result)
 
ReachingPointerStores proteus::getReachingPointerStores (const DataLayout &DL, LoadInst &LI)
 
Value * proteus::getPointerLoadOrigin (const DataLayout &DL, Value *V, SmallPtrSetImpl< Value * > &Visited)
 
Value * proteus::getUniqueReachingPointer (const DataLayout &DL, const ReachingPointerStores &Stores, SmallPtrSetImpl< Value * > &Visited)
 
bool proteus::hasAmbiguousReachingPointers (const DataLayout &DL, const ReachingPointerStores &Stores)
 
bool proteus::isPointerSpillLoad (const LoadInst &LI)
 
bool proteus::analyzeLambdaUses (llvm::Module &M, DenseMap< CallBase *, LambdaKernelArgAnalysis > &CallBaseToArgOffset, const SmallVector< CallBase * > &CBToAnalyze)