Fail with an error if attempting to serialize an unknown attr.
diff --git a/iree/compiler/Dialect/Util/IR/UtilAttrs.cpp b/iree/compiler/Dialect/Util/IR/UtilAttrs.cpp
index 370a1df..c519b6b 100644
--- a/iree/compiler/Dialect/Util/IR/UtilAttrs.cpp
+++ b/iree/compiler/Dialect/Util/IR/UtilAttrs.cpp
@@ -462,6 +462,11 @@
                                                llvm::raw_ostream &os) const {
   for (auto valueAttr : getValues()) {
     auto serializableAttr = valueAttr.dyn_cast<SerializableAttrInterface>();
+    if (!serializableAttr) {
+      llvm::errs() << "unable to serialize a non-serializable attribute: "
+                   << valueAttr.getType() << "\n";
+      return failure();
+    }
     if (failed(serializableAttr.serializeToStream(endian, os))) {
       return failure();
     }