diff options
Diffstat (limited to 'mlir/lib/Dialect/LLVMIR/IR/LLVMAttrs.cpp')
-rw-r--r-- | mlir/lib/Dialect/LLVMIR/IR/LLVMAttrs.cpp | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMAttrs.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMAttrs.cpp index c7ddc1b..ff1636bc 100644 --- a/mlir/lib/Dialect/LLVMIR/IR/LLVMAttrs.cpp +++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMAttrs.cpp @@ -48,10 +48,28 @@ void LLVMDialect::registerAttributes() { addAttributes< #define GET_ATTRDEF_LIST #include "mlir/Dialect/LLVMIR/LLVMOpsAttrDefs.cpp.inc" + >(); } //===----------------------------------------------------------------------===// +// AliasScopeAttr +//===----------------------------------------------------------------------===// + +LogicalResult +AliasScopeAttr::verify(function_ref<InFlightDiagnostic()> emitError, + Attribute id, AliasScopeDomainAttr domain, + StringAttr description) { + (void)domain; + (void)description; + if (!llvm::isa<StringAttr, DistinctAttr>(id)) + return emitError() + << "id of an alias scope must be a StringAttr or a DistrinctAttr"; + + return success(); +} + +//===----------------------------------------------------------------------===// // DINodeAttr //===----------------------------------------------------------------------===// @@ -232,7 +250,7 @@ DIRecursiveTypeAttrInterface DISubprogramAttr::withRecId(DistinctAttr recId) { DIRecursiveTypeAttrInterface DISubprogramAttr::getRecSelf(DistinctAttr recId) { return DISubprogramAttr::get(recId.getContext(), recId, /*isRecSelf=*/true, - {}, {}, {}, {}, {}, 0, 0, {}, {}, {}, {}, {}); + {}, {}, {}, {}, {}, {}, 0, 0, {}, {}, {}, {}); } //===----------------------------------------------------------------------===// @@ -288,6 +306,16 @@ TargetFeaturesAttr TargetFeaturesAttr::get(MLIRContext *context, })); } +TargetFeaturesAttr +TargetFeaturesAttr::getChecked(function_ref<InFlightDiagnostic()> emitError, + MLIRContext *context, + llvm::ArrayRef<StringRef> features) { + return Base::getChecked(emitError, context, + llvm::map_to_vector(features, [&](StringRef feature) { + return StringAttr::get(context, feature); + })); +} + TargetFeaturesAttr TargetFeaturesAttr::get(MLIRContext *context, StringRef targetFeatures) { SmallVector<StringRef> features; @@ -296,6 +324,16 @@ TargetFeaturesAttr TargetFeaturesAttr::get(MLIRContext *context, return get(context, features); } +TargetFeaturesAttr +TargetFeaturesAttr::getChecked(function_ref<InFlightDiagnostic()> emitError, + MLIRContext *context, StringRef targetFeatures) { + SmallVector<StringRef> features; + targetFeatures.split(features, ',', /*MaxSplit=*/-1, + /*KeepEmpty=*/false); + ArrayRef featuresRef(features); + return getChecked(emitError, context, featuresRef); +} + LogicalResult TargetFeaturesAttr::verify(function_ref<InFlightDiagnostic()> emitError, llvm::ArrayRef<StringAttr> features) { |