LLVM 22.0.0git
VNCoercion.cpp File Reference

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
namespace  llvm::VNCoercion

Macros

#define DEBUG_TYPE   "vncoerce"

Functions

static bool llvm::VNCoercion::isFirstClassAggregateOrScalableType (Type *Ty)
bool llvm::VNCoercion::canCoerceMustAliasedValueToLoad (Value *StoredVal, Type *LoadTy, Function *F)
 Return true if CoerceAvailableValueToLoadType would succeed if it was called.
Valuellvm::VNCoercion::coerceAvailableValueToLoadType (Value *StoredVal, Type *LoadedTy, IRBuilderBase &IRB, Function *F)
 If we saw a store of a value to memory, and then a load from a must-aliased pointer of a different type, try to coerce the stored value to the loaded type.
static int llvm::VNCoercion::analyzeLoadFromClobberingWrite (Type *LoadTy, Value *LoadPtr, Value *WritePtr, uint64_t WriteSizeInBits, const DataLayout &DL)
 This function is called when we have a memdep query of a load that ends up being a clobbering memory write (store, memset, memcpy, memmove).
int llvm::VNCoercion::analyzeLoadFromClobberingStore (Type *LoadTy, Value *LoadPtr, StoreInst *DepSI, const DataLayout &DL)
 This function determines whether a value for the pointer LoadPtr can be extracted from the store at DepSI.
int llvm::VNCoercion::analyzeLoadFromClobberingLoad (Type *LoadTy, Value *LoadPtr, LoadInst *DepLI, const DataLayout &DL)
 This function determines whether a value for the pointer LoadPtr can be extracted from the load at DepLI.
int llvm::VNCoercion::analyzeLoadFromClobberingMemInst (Type *LoadTy, Value *LoadPtr, MemIntrinsic *DepMI, const DataLayout &DL)
 This function determines whether a value for the pointer LoadPtr can be extracted from the memory intrinsic at DepMI.
static Valuellvm::VNCoercion::getStoreValueForLoadHelper (Value *SrcVal, unsigned Offset, Type *LoadTy, IRBuilderBase &Builder, const DataLayout &DL)
Valuellvm::VNCoercion::getValueForLoad (Value *SrcVal, unsigned Offset, Type *LoadTy, Instruction *InsertPt, Function *F)
 If analyzeLoadFromClobberingStore/Load returned an offset, this function can be used to actually perform the extraction of the bits from the store.
Constantllvm::VNCoercion::getConstantValueForLoad (Constant *SrcVal, unsigned Offset, Type *LoadTy, const DataLayout &DL)
Valuellvm::VNCoercion::getMemInstValueForLoad (MemIntrinsic *SrcInst, unsigned Offset, Type *LoadTy, Instruction *InsertPt, const DataLayout &DL)
 If analyzeLoadFromClobberingMemInst returned an offset, this function can be used to actually perform the extraction of the bits from the memory intrinsic.
Constantllvm::VNCoercion::getConstantMemInstValueForLoad (MemIntrinsic *SrcInst, unsigned Offset, Type *LoadTy, const DataLayout &DL)

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "vncoerce"

Definition at line 7 of file VNCoercion.cpp.