# 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