# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception from typing import Dict, Optional from ._builtin_ops_gen import * from ._builtin_ops_gen import _Dialect from ..extras.meta import region_op try: from ..ir import * from ._ods_common import _cext as _ods_cext except ImportError as e: raise RuntimeError("Error loading imports from extension module") from e @_ods_cext.register_operation(_Dialect, replace=True) class ModuleOp(ModuleOp): """Specialization for the module op class.""" def __init__(self, *, loc=None, ip=None): super().__init__(loc=loc, ip=ip) body = self.regions[0].blocks.append() @property def body(self): return self.regions[0].blocks[0] @region_op def module( *, sym_name=None, sym_visibility=None, attrs: Optional[Dict[str, Attribute]] = None, loc=None, ip=None, ): mod = ModuleOp.__base__( sym_name=sym_name, sym_visibility=sym_visibility, loc=loc, ip=ip ) if attrs is None: attrs = {} for attr_name, attr in attrs.items(): mod.operation.attributes[attr_name] = attr return mod