[Mlir-commits] [mlir] [mlir][SPIR-V] Deserialize all unit decorations on function parameters (PR #230611)

Arseniy Obolenskiy llvmlistbot at llvm.org
Wed Oct 14 23:09:45 PDT 2026


================
@@ -524,48 +524,19 @@ LogicalResult spirv::Deserializer::setFunctionArgAttrs(
                      decAttr.getValue());
       continue;
     }
-    bool handled = false;
-    for (auto decoration :
-         {spirv::Decoration::Aliased, spirv::Decoration::Restrict,
-          spirv::Decoration::AliasedPointer,
-          spirv::Decoration::RestrictPointer}) {
-
-      if (decAttr.getName() !=
-          getSymbolDecoration(stringifyDecoration(decoration)))
-        continue;
-
-      if (foundDecorationAttr)
-        return emitError(unknownLoc,
-                         "more than one Aliased/Restrict decorations for "
-                         "function argument with result <id> ")
-               << argID;
-
-      foundDecorationAttr = spirv::DecorationAttr::get(context, decoration);
-      handled = true;
-      break;
-    }
-    if (handled)
+    if (!isa<UnitAttr>(decAttr.getValue()))
       continue;
 
-    if (decAttr.getName() == getSymbolDecoration(stringifyDecoration(
-                                 spirv::Decoration::RelaxedPrecision))) {
-      // TODO: Current implementation supports only one decoration per function
-      // parameter so RelaxedPrecision cannot be applied at the same time as,
-      // for example, Aliased/Restrict/etc. This should be relaxed to allow any
-      // combination of decoration allowed by the spec to be supported.
-      if (foundDecorationAttr)
-        return emitError(unknownLoc, "already found a decoration for function "
-                                     "argument with result <id> ")
-               << argID;
-
-      foundDecorationAttr = spirv::DecorationAttr::get(
-          context, spirv::Decoration::RelaxedPrecision);
-      continue;
-    }
+    // TODO: Support multiple decorations per function parameter.
+    if (foundDecorationAttr)
+      return emitError(unknownLoc, "already found a decoration for function "
+                                   "argument with result <id> ")
+             << argID;
 
-    return emitError(unknownLoc, "unhandled decoration '")
-           << decAttr.getName().getValue()
-           << "' on function argument with result <id> " << argID;
+    std::optional<spirv::Decoration> decoration = spirv::symbolizeDecoration(
+        llvm::convertToCamelFromSnakeCase(decAttr.getName(), true));
+    assert(decoration.has_value());
----------------
aobolensk wrote:

Added error for more safety

https://github.com/llvm/llvm-project/pull/230611


More information about the Mlir-commits mailing list