diff --git a/loopy/frontend/fortran/__init__.py b/loopy/frontend/fortran/__init__.py index aad2328b0bfbf4b37c6c6453358668d14fd39388..2626069a0551a7e11c7b8703965423be8011860c 100644 --- a/loopy/frontend/fortran/__init__.py +++ b/loopy/frontend/fortran/__init__.py @@ -211,7 +211,8 @@ def parse_transformed_fortran(source, free_form=True, strict=True, return proc_dict["RESULT"] -def parse_fortran(source, filename="<floopy code>", free_form=True, strict=True): +def parse_fortran(source, filename="<floopy code>", free_form=True, strict=True, + auto_dependencies=True): """ :returns: a list of :class:`loopy.LoopKernel` objects """ @@ -231,7 +232,7 @@ def parse_fortran(source, filename="<floopy code>", free_form=True, strict=True) "and returned invalid data (Sorry!)") from loopy.frontend.fortran.translator import F2LoopyTranslator - f2loopy = F2LoopyTranslator(filename) + f2loopy = F2LoopyTranslator(filename, auto_dependencies=auto_dependencies) f2loopy(tree) return f2loopy.make_kernels() diff --git a/loopy/frontend/fortran/translator.py b/loopy/frontend/fortran/translator.py index 895606aa38df3bac78e05d18822a5dbf494d0948..f34c69978c0b9390d7bf216f70043b472a51cc67 100644 --- a/loopy/frontend/fortran/translator.py +++ b/loopy/frontend/fortran/translator.py @@ -197,9 +197,11 @@ class Scope(object): # {{{ translator class F2LoopyTranslator(FTreeWalkerBase): - def __init__(self, filename): + def __init__(self, filename, auto_dependencies): FTreeWalkerBase.__init__(self) + self.auto_dependencies = auto_dependencies + self.scope_stack = [] self.isl_context = isl.Context() @@ -223,7 +225,7 @@ class F2LoopyTranslator(FTreeWalkerBase): new_id = "insn%d" % self.insn_id_counter self.insn_id_counter += 1 - if scope.previous_instruction_id: + if self.auto_dependencies and scope.previous_instruction_id: insn_deps = frozenset([scope.previous_instruction_id]) else: insn_deps = frozenset()