///
/// Note: This only supports non-TFE/LWE image intrinsic calls; those have
/// struct returns.
-Value *simplifyAMDGCNMemoryIntrinsicDemanded(InstCombiner &IC,
- IntrinsicInst &II,
- APInt DemandedElts,
- int DMaskIdx = -1) {
+static Value *simplifyAMDGCNMemoryIntrinsicDemanded(InstCombiner &IC,
+ IntrinsicInst &II,
+ APInt DemandedElts,
+ int DMaskIdx = -1) {
auto *IIVTy = cast<VectorType>(II.getType());
unsigned VWidth = IIVTy->getNumElements();
return false;
}
-bool checkOffsetSize(Value *Offsets, unsigned TargetElemCount) {
+static bool checkOffsetSize(Value *Offsets, unsigned TargetElemCount) {
// Offsets that are not of type <N x i32> are sign extended by the
// getelementptr instruction, and MVE gathers/scatters treat the offset as
// unsigned. Thus, if the element size is smaller than 32, we can only allow
return true;
}
-Value *CheckAndCreateOffsetAdd(Value *X, Value *Y, Value *GEP,
- IRBuilder<> &Builder) {
-
+static Value *CheckAndCreateOffsetAdd(Value *X, Value *Y, Value *GEP,
+ IRBuilder<> &Builder) {
// Splat the non-vector value to a vector of the given type - if the value is
// a constant (and its value isn't too big), we can even use this opportunity
// to scale it to the size of the vector elements
DFSF.setShadow(&PN, ShadowPN);
}
+namespace {
class DataFlowSanitizerLegacyPass : public ModulePass {
private:
std::vector<std::string> ABIListFiles;
return DataFlowSanitizer(ABIListFiles).runImpl(M);
}
};
+} // namespace
char DataFlowSanitizerLegacyPass::ID;