@@ -48,6 +48,7 @@ void LLVMDialect::registerAttributes() {
4848 addAttributes<
4949#define GET_ATTRDEF_LIST
5050#include " mlir/Dialect/LLVMIR/LLVMOpsAttrDefs.cpp.inc"
51+
5152 >();
5253}
5354
@@ -288,6 +289,16 @@ TargetFeaturesAttr TargetFeaturesAttr::get(MLIRContext *context,
288289 }));
289290}
290291
292+ TargetFeaturesAttr
293+ TargetFeaturesAttr::getChecked (function_ref<InFlightDiagnostic()> emitError,
294+ MLIRContext *context,
295+ llvm::ArrayRef<StringRef> features) {
296+ return Base::getChecked (emitError, context,
297+ llvm::map_to_vector (features, [&](StringRef feature) {
298+ return StringAttr::get (context, feature);
299+ }));
300+ }
301+
291302TargetFeaturesAttr TargetFeaturesAttr::get (MLIRContext *context,
292303 StringRef targetFeatures) {
293304 SmallVector<StringRef> features;
@@ -296,6 +307,16 @@ TargetFeaturesAttr TargetFeaturesAttr::get(MLIRContext *context,
296307 return get (context, features);
297308}
298309
310+ TargetFeaturesAttr
311+ TargetFeaturesAttr::getChecked (function_ref<InFlightDiagnostic()> emitError,
312+ MLIRContext *context, StringRef targetFeatures) {
313+ SmallVector<StringRef> features;
314+ targetFeatures.split (features, ' ,' , /* MaxSplit=*/ -1 ,
315+ /* KeepEmpty=*/ false );
316+ ArrayRef featuresRef (features);
317+ return getChecked (emitError, context, featuresRef);
318+ }
319+
299320LogicalResult
300321TargetFeaturesAttr::verify (function_ref<InFlightDiagnostic()> emitError,
301322 llvm::ArrayRef<StringAttr> features) {
0 commit comments