message: Simplify tf::ConstOp's inferReturnTypes
  Interface has now changed to use DictionaryAttr so use its query methods instead. Need to verify attribute still as this can be called before the op is created so we can't rely on the op's verification from catching these yet (this should be refactored upstream).
diff: @@ -986,9 +986,8 @@ LogicalResult ConstOp::inferReturnTypes(
  MLIRContext *context, Optional<Location> location, ValueRange operands,
  DictionaryAttr attributes, RegionRange regions,
  SmallVectorImpl<Type> &inferredReturnTypes) {
  - for (NamedAttribute named_attr : attributes) {
  - if (named_attr.first.strref() != "value") continue;
  - auto value = named_attr.second;
  + auto value = attributes.get("value");
  + if (!value) return emitOptionalError(location, "missing attribute 'value'");
  if (auto elem_attr = value.dyn_cast<ElementsAttr>()) {
  inferredReturnTypes.assign({elem_attr.getType()});
  return success();
  @@ -997,8 +996,6 @@ LogicalResult ConstOp::inferReturnTypes(
  "attribute 'value' failed to satisfy constraint: "
  "constant vector/tensor");
  }
  - return emitOptionalError(location, "missing attribute 'value'");
  -}
  //===----------------------------------------------------------------------===//
  // Conv2DOp and Conv3DOp
  