|
LLVM 23.0.0git
|
#include "llvm/Transforms/Utils/VNCoercion.h"#include "llvm/Analysis/ConstantFolding.h"#include "llvm/Analysis/ValueTracking.h"#include "llvm/IR/IRBuilder.h"#include "llvm/IR/IntrinsicInst.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "vncoerce" |
Functions | |
| static bool | isFirstClassAggregateOrScalableType (Type *Ty) |
| static int | 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). | |
| static Value * | getStoreValueForLoadHelper (Value *SrcVal, unsigned Offset, Type *LoadTy, IRBuilderBase &Builder, const DataLayout &DL) |
| #define DEBUG_TYPE "vncoerce" |
Definition at line 7 of file VNCoercion.cpp.
|
static |
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).
This means that the write may provide bits used by the load but we can't be sure because the pointers don't must-alias.
Check this case to see if there is anything more we can do before we give up. This returns -1 if we have to give up, or a byte number in the stored value of the piece that feeds the load.
Definition at line 198 of file VNCoercion.cpp.
References DL, llvm::GetPointerBaseWithConstantOffset(), and isFirstClassAggregateOrScalableType().
Referenced by llvm::VNCoercion::analyzeLoadFromClobberingLoad(), llvm::VNCoercion::analyzeLoadFromClobberingMemInst(), and llvm::VNCoercion::analyzeLoadFromClobberingStore().
|
static |
Definition at line 321 of file VNCoercion.cpp.
References assert(), llvm::cast(), DL, llvm::IntegerType::get(), llvm::Type::getContext(), llvm::Type::getScalarType(), llvm::Value::getType(), llvm::isa(), llvm::Type::isIntegerTy(), llvm::Type::isPointerTy(), llvm::Type::isPtrOrPtrVectorTy(), and llvm::Offset.
Referenced by llvm::VNCoercion::getValueForLoad().
Definition at line 12 of file VNCoercion.cpp.
References llvm::isa().
Referenced by llvm::VNCoercion::analyzeLoadFromClobberingLoad(), llvm::VNCoercion::analyzeLoadFromClobberingStore(), analyzeLoadFromClobberingWrite(), and llvm::VNCoercion::canCoerceMustAliasedValueToLoad().