Skip to content
Merged
13 changes: 6 additions & 7 deletions mypyc/codegen/emitmodule.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
from mypyc.irbuild.prepare import load_type_map
from mypyc.namegen import NameGenerator, exported_name
from mypyc.options import CompilerOptions
from mypyc.transform.copy_propagation import do_copy_propagation
from mypyc.transform.exceptions import insert_exception_handling
from mypyc.transform.refcount import insert_ref_count_opcodes
from mypyc.transform.uninit import insert_uninit_checks
Expand Down Expand Up @@ -225,18 +226,16 @@ def compile_scc_to_ir(
if errors.num_errors > 0:
return modules

# Insert uninit checks.
for module in modules.values():
for fn in module.functions:
# Insert uninit checks.
insert_uninit_checks(fn)
# Insert exception handling.
for module in modules.values():
for fn in module.functions:
# Insert exception handling.
insert_exception_handling(fn)
# Insert refcount handling.
for module in modules.values():
for fn in module.functions:
# Insert refcount handling.
insert_ref_count_opcodes(fn)
# Perform copy propagation optimization.
do_copy_propagation(fn, compiler_options)

return modules

Expand Down
6 changes: 2 additions & 4 deletions mypyc/irbuild/builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ def __init__(
options: CompilerOptions,
singledispatch_impls: dict[FuncDef, list[RegisterImplInfo]],
) -> None:
self.builder = LowLevelIRBuilder(current_module, errors, mapper, options)
self.builder = LowLevelIRBuilder(errors, options)
self.builders = [self.builder]
self.symtables: list[dict[SymbolNode, SymbolTarget]] = [{}]
self.runtime_args: list[list[RuntimeArg]] = [[]]
Expand Down Expand Up @@ -1111,9 +1111,7 @@ def flatten_classes(self, arg: RefExpr | TupleExpr) -> list[ClassIR] | None:
def enter(self, fn_info: FuncInfo | str = "") -> None:
if isinstance(fn_info, str):
fn_info = FuncInfo(name=fn_info)
self.builder = LowLevelIRBuilder(
self.current_module, self.errors, self.mapper, self.options
)
self.builder = LowLevelIRBuilder(self.errors, self.options)
self.builder.set_module(self.module_name, self.module_path)
self.builders.append(self.builder)
self.symtables.append({})
Expand Down
8 changes: 2 additions & 6 deletions mypyc/irbuild/ll_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,6 @@
short_int_rprimitive,
str_rprimitive,
)
from mypyc.irbuild.mapper import Mapper
from mypyc.irbuild.util import concrete_arg_kind
from mypyc.options import CompilerOptions
from mypyc.primitives.bytes_ops import bytes_compare
Expand Down Expand Up @@ -220,12 +219,8 @@


class LowLevelIRBuilder:
def __init__(
self, current_module: str, errors: Errors, mapper: Mapper, options: CompilerOptions
) -> None:
self.current_module = current_module
def __init__(self, errors: Errors | None, options: CompilerOptions) -> None:
self.errors = errors
self.mapper = mapper
self.options = options
self.args: list[Register] = []
self.blocks: list[BasicBlock] = []
Expand Down Expand Up @@ -2394,6 +2389,7 @@ def _create_dict(self, keys: list[Value], values: list[Value], line: int) -> Val
return self.call_c(dict_new_op, [], line)

def error(self, msg: str, line: int) -> None:
assert self.errors is not None, "cannot generate errors in this compiler phase"
self.errors.error(msg, self.module_path, line)


Expand Down
Loading