diff --git a/src/backends/backends.ml b/src/backends/backends.ml index b0d4f81706d11ca95b6f25f4adb5a0ee3c36bff3..c4a4f012786d48974acd9891cde7831afd355da1 100644 --- a/src/backends/backends.ml +++ b/src/backends/backends.ml @@ -2,14 +2,14 @@ let join_guards = ref true let setup () = - match !Options.output with - | "emf" -> - (* Not merging branches *) - join_guards := false; - (* In case of a default "int" type, substitute it with the legal int32 value *) - if !Options.int_type = "int" then - Options.int_type := "int32" - | _ -> () + if !Options.output = "emf" then begin + (* Not merging branches *) + join_guards := false; + (* In case of a default "int" type, substitute it with the legal int32 value *) + if !Options.int_type = "int" then Options.int_type := "int32" + end; + if !Options.optimization < 0 then + join_guards := false let is_functional () = match !Options.output with diff --git a/src/main_lustre_compiler.ml b/src/main_lustre_compiler.ml index f667d00e544f64464613f93169a57aa38ffe296d..15cfb58e90ec3c295ee9d3ad8caff5b31ba7715a 100644 --- a/src/main_lustre_compiler.ml +++ b/src/main_lustre_compiler.ml @@ -57,7 +57,7 @@ let compile dirname basename extension = let params = Backends.get_normalization_params () in let prog, dependencies = - Log.report ~level:1 (fun fmt -> fprintf fmt "@[<v 2>.. Phase 1 : Normalisation@,"); + Log.report ~level:1 (fun fmt -> fprintf fmt "@[<v 2>.. Phase 1: Normalisation@,"); try Compiler_stages.stage1 params prog dirname basename extension with Compiler_stages.StopPhase1 prog -> ( @@ -124,11 +124,12 @@ let anonymous filename = else ok, ext) (false, "") extensions in - if ok_ext then + if ok_ext then begin + Options_management.setup(); let dirname = Filename.dirname filename in let basename = Filename.chop_suffix (Filename.basename filename) ext in compile dirname basename ext - else + end else raise (Arg.Bad ("Can only compile *.lusi, *.lus or *.ec files")) let _ = diff --git a/src/options.ml b/src/options.ml index 4d87b07655b98226e15c47eedf38a13bd297d1da..57decf9bce524876c9fcd8eeb7367f28de06e4d4 100644 --- a/src/options.ml +++ b/src/options.ml @@ -65,8 +65,7 @@ let al_nb_max = ref 15 (* Printer options *) let kind2_print = ref false - - + (* Local Variables: *) (* compile-command:"make -C .." *) (* End: *) diff --git a/src/options_management.ml b/src/options_management.ml index b094172631ab2fa454fe3347f613d8f0791c9584..dd81492f253f74b13122b724d576b7efc14b3505 100644 --- a/src/options_management.ml +++ b/src/options_management.ml @@ -88,10 +88,12 @@ let set_real_type s = ) | _ -> real_type := s -let set_backend s = - output := s; +let setup () = Backends.setup () +let set_backend s = + output := s + let common_options = [ "-d", Arg.Set_string dest_dir, "uses the specified \x1b[4mdirectory\x1b[0m as root for generated/imported object and C files <default: .>"; "-I", Arg.String add_include_dir, "sets include \x1b[4mdirectory\x1b[0m";