From b81cda3caed8b86f3158ddff3ff76eda58f4fd7b Mon Sep 17 00:00:00 2001
From: Erwan Jahier <jahier@imag.fr>
Date: Wed, 17 Sep 2008 16:22:34 +0200
Subject: [PATCH] Enhance the test coverage rule in src/Makefile (print the
 ratio dead hits versus all hits).

---
 src/Makefile              |  10 +-
 src/dead.grep             | 804 +++++++++++++++++++-------------------
 src/untested_line_counter |   2 +-
 3 files changed, 410 insertions(+), 406 deletions(-)

diff --git a/src/Makefile b/src/Makefile
index 89a42f8a..5b37005e 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -70,15 +70,19 @@ test/ocamlprof.dump: pbc test
 prof: test/ocamlprof.dump
 	mkdir prof || rm prof/*
 	for d in ${SOURCES}; do \
-	   ocamlprof -f test/ocamlprof.dump $$d > prof/$$d ;\
+	   ocamlprof -F "ocamlprof: " -f test/ocamlprof.dump $$d > prof/$$d ;\
 	done
 
 grep:
 	rm test/ocamlprof.dump || true
 	make clean
 	make prof
-	grep -n -e  "(\* 0 \*)" prof/*.ml | grep -v "assert false" > dead.grep
-	wc dead.grep > untested_line_counter
+	grep -n -e  "(\* ocamlprof: 0 \*)" prof/*.ml | grep -v "assert false" > dead.grep
+	grep -n -e  "(\* ocamlprof: " prof/*.ml | grep -v "assert false" > all.grep
+	DEAD_HITS=`wc -l dead.grep | cut -f 1 -d " "`;\
+	ALL_HITS=`wc -l all.grep  | cut -f 1 -d " "`;\
+	SOL=`echo "scale=2 ; $$DEAD_HITS * 100 / $$ALL_HITS " | bc ` ;\
+	echo "$$DEAD_HITS / $$ALL_HITS = $$SOL %" > untested_line_counter
 	cat untested_line_counter
 
 ##############################################################################"
diff --git a/src/dead.grep b/src/dead.grep
index 6468ebfc..01b8363e 100644
--- a/src/dead.grep
+++ b/src/dead.grep
@@ -1,402 +1,402 @@
-prof/compile.ml:31:    if Verbose.get_level () > 2 then (* 0 *) SyntaxTab.dump syntax_tab;
-prof/compile.ml:38:          (* 0 *) let main_node_key = 
-prof/compile.ml:46:              (* 0 *) LazyCompiler.compile_all lzcomp
-prof/compile.ml:48:              (* 0 *) ignore(LazyCompiler.node_check lzcomp main_node_key 
-prof/compile.ml:50:                          | None -> (* 0 *) Lxm.dummy "" 
-prof/compile.ml:51:                          | Some pn  -> (* 0 *) Lxm.dummy (Ident.pack_name_to_string pn)))
-prof/eff.ml:424:    | On(cid1,_), On(cid2,_) -> (* 0 *) cid1 = cid2
-prof/eff.ml:437:  fun nkey -> (* 0 *) (nkey, [])
-prof/eff.ml:446:    | Enum_type_eff(l,el) ->  (* 0 *) Enum_type_eff(l,el)
-prof/eff.ml:463:    | Struct_const_eff (fl, teff) -> (* 0 *) teff
-prof/errors.ml:123:let warning lxm msg = (* 0 *) (
-prof/errors.ml:138:let print_internal_error fnme msg = (* 0 *) (
-prof/evalClock.ml:139:      | On(_,_), BaseEff -> (* 0 *) None
-prof/evalClock.ml:144:          with _ -> (* 0 *) is_a_sub_clock lxm s (id_sc,sc) (id_c,clk2) 
-prof/evalClock.ml:150:          (* 0 *) let s1,s2 = s in 
-prof/evalClock.ml:154:          (* 0 *) let s1,s2 = s in 
-prof/evalClock.ml:196:        | id, On(v, ClockVar _) -> (* 0 *) id, On(v, BaseEff)
-prof/evalClock.ml:206:      (* 0 *) print_string "*** No entry for '";
-prof/evalClock.ml:243:            (* 0 *) raise (Compile_error(lxm, "\n*** can't eval constant: "^msg))
-prof/evalClock.ml:266:              | [id, BaseEff] -> (* 0 *) [id, BaseEff],s
-prof/evalClock.ml:273:              | Base -> (* 0 *) BaseEff, BaseEff
-prof/evalClock.ml:293:                  (* 0 *) let msg = "\n*** clock error: '" ^ (ci2str (snd exp_clk)) ^ 
-prof/evalClock.ml:364:                  | ClockVar i -> (* 0 *) ci
-prof/evalConst.ml:26:let finish_me msg = (* 0 *) print_string ("\n\tXXX evalConst.ml:"^msg^" ->  finish me!\n")
-prof/evalConst.ml:29:  (* 0 *) raise (EvalConst_error(
-prof/evalConst.ml:45:    (* 0 *) let get_res (ix : int) = (* 0 *) Array.get ctab (slice.se_first + ix*slice.se_step) in
-prof/evalConst.ml:52:    (* 0 *) let expected_type = ref None in
-prof/evalConst.ml:54:      (* 0 *) match op with
-prof/evalConst.ml:55:        | [x] -> (* 0 *) (
-prof/evalConst.ml:59:                | None -> (* 0 *) expected_type := Some xtyp; x
-prof/evalConst.ml:60:                | Some t -> (* 0 *) (
-prof/evalConst.ml:61:                    if (t = xtyp) then (* 0 *) x else 
-prof/evalConst.ml:62:                      (* 0 *) raise (EvalConst_error(
-prof/evalConst.ml:70:            (* 0 *) raise (EvalConst_error("array of tuple not allowed"))
-prof/evalConst.ml:74:        | None -> (* 0 *) raise (EvalConst_error("empty array"))
-prof/evalConst.ml:75:        | Some t -> (* 0 *) Array_const_eff(res, t)
-prof/evalConst.ml:86:  (* 0 *) (
-prof/evalConst.ml:89:        Struct_type_eff (tnm, flst) -> (* 0 *) (
-prof/evalConst.ml:91:          let make_eff_field ((fn: Ident.t),((ft:Eff.type_),(fv:Eff.const option))) = (* 0 *) (
-prof/evalConst.ml:95:                  (lxm, v) -> (* 0 *) (
-prof/evalConst.ml:99:                      if (vt = ft) then (* 0 *) (fn, v) (*ok*)
-prof/evalConst.ml:100:                      else (* 0 *) raise (Compile_error(
-prof/evalConst.ml:109:            ) with Not_found -> (* 0 *) (
-prof/evalConst.ml:112:                  Some v -> (* 0 *) (fn, v) (* ok : v correcte par construction *)
-prof/evalConst.ml:114:                    (* 0 *) raise (EvalConst_error(
-prof/evalConst.ml:125:              = (* 0 *) raise(Compile_error(
-prof/evalConst.ml:137:      | _ -> (* 0 *) raise (EvalConst_error(
-prof/evalConst.ml:175:          | SyntaxTreeCore.CallByName ({it=nmop; src=lxm}, nmargs ) -> (* 0 *) (
-prof/evalConst.ml:178:                (* 0 *) raise (Compile_error(lxm, "\n*** can't eval constant: "^msg))
-prof/evalConst.ml:206:              | WITH_n(a0,a1,a2) -> (* 0 *) (
-prof/evalConst.ml:208:                      [ Bool_const_eff true] -> (* 0 *) rec_eval_const a1
-prof/evalConst.ml:209:                    | [ Bool_const_eff false] -> (* 0 *) rec_eval_const a2
-prof/evalConst.ml:210:                    | x -> (* 0 *) type_error_const x "bool"
-prof/evalConst.ml:213:              | TUPLE_n -> (* 0 *) ( List.flatten (List.map rec_eval_const args))
-prof/evalConst.ml:225:                                  (* 0 *) raise (EvalConst_error("array of tuple not allowed"))
-prof/evalConst.ml:227:                            EvalArray_error msg -> (* 0 *) raise(EvalConst_error msg)
-prof/evalConst.ml:229:                    | _ -> (* 0 *) raise(EvalConst_error
-prof/evalConst.ml:233:              | CONCAT_n -> (* 0 *) (
-prof/evalConst.ml:237:                         [Array_const_eff (v1, t1)]] -> (* 0 *) (
-prof/evalConst.ml:239:                            (* 0 *) [Array_const_eff (Array.append v0 v1, t0)]  
-prof/evalConst.ml:241:                            (* 0 *) raise(EvalConst_error(
-prof/evalConst.ml:249:                          (* 0 *) raise(EvalConst_error(
-prof/evalConst.ml:251:                      | _ -> (* 0 *) raise(EvalConst_error
-prof/evalConst.ml:255:              | ARRAY_n -> (* 0 *) (
-prof/evalConst.ml:262:                      | [Array_const_eff (elts, typelts)] -> (* 0 *) (
-prof/evalConst.ml:267:                          with EvalArray_error msg -> (* 0 *) raise(EvalConst_error msg)
-prof/evalConst.ml:269:                      |  _  -> (* 0 *) type_error_const effargs "some array"
-prof/evalConst.ml:271:              | ARRAY_SLICE_n sl -> (* 0 *) (
-prof/evalConst.ml:274:                      | [Array_const_eff (l, t)] -> (* 0 *) (l, t) 
-prof/evalConst.ml:275:                      | x -> (* 0 *) type_error_const x "some array"
-prof/evalConst.ml:284:                        EvalArray_error msg -> (* 0 *) raise(EvalConst_error msg)
-prof/evalConst.ml:288:                  (* 0 *) let ceff_list = List.flatten (List.map rec_eval_const args) in
-prof/evalConst.ml:290:                       | [Struct_const_eff (flst, typ)] -> (* 0 *) (
-prof/evalConst.ml:293:                             (* 0 *) raise (EvalConst_error
-prof/evalConst.ml:298:                       | [x] -> (* 0 *) type_error_const [x] "struct type"
-prof/evalConst.ml:299:                       | x -> (* 0 *) arity_error_const x "1"
-prof/evalConst.ml:302:              | CALL_n _ -> (* 0 *) not_evaluable_construct "node call"
-prof/evalConst.ml:303:              | MERGE_n _ -> (* 0 *) not_evaluable_construct "merge"
-prof/evalConst.ml:304:              | WHEN_n _ -> (* 0 *) not_evaluable_construct "when"
-prof/evalConst.ml:305:              | FBY_n -> (* 0 *) not_evaluable_construct "fby"
-prof/evalConst.ml:306:              | ARROW_n -> (* 0 *) not_evaluable_construct "->"
-prof/evalConst.ml:307:              | CURRENT_n -> (* 0 *) not_evaluable_construct "current"
-prof/evalConst.ml:308:              | PRE_n -> (* 0 *) not_evaluable_construct "pre"
-prof/evalConst.ml:317:                    (* 0 *) not_evaluable_construct (op2string op)
-prof/evalConst.ml:331:          = (* 0 *) (
-prof/evalConst.ml:334:                  (* 0 *) finish_me "anonymous struct"; 
-prof/evalConst.ml:337:              | STRUCT_n opid -> (* 0 *) (
-prof/evalConst.ml:341:                    (* 0 *) if 
-prof/evalConst.ml:344:                      (* 0 *) raise(EvalConst_error(
-prof/evalConst.ml:350:                      (* 0 *) let v = rec_eval_const pexp in
-prof/evalConst.ml:352:                          | [x] -> (* 0 *) Hashtbl.add arg_tab pid.it (pid.src, x)
-prof/evalConst.ml:354:                              (* 0 *) raise(
-prof/evalConst.ml:367:                      (* 0 *) raise(EvalConst_error(
-prof/evalConst.ml:398:            (* 0 *) raise(EvalArray_error(sprintf "bad array size %d" sz))
-prof/evalConst.ml:400:          (* 0 *) raise(EvalArray_error(sprintf  "bad array size, int expected but get %s"
-prof/evalConst.ml:403:          (* 0 *) raise(EvalArray_error(sprintf "bad array size, int expected, not a tuple"))
-prof/evalConst.ml:431:            (* 0 *) raise(EvalArray_error("The extern const " ^ (Ident.string_of_long id) ^ 
-prof/evalConst.ml:434:        | [x] -> (* 0 *) raise(EvalArray_error(sprintf 
-prof/evalConst.ml:438:        | _ -> (* 0 *) raise(EvalArray_error(
-prof/evalConst.ml:444:        (* 0 *) raise (Compile_error(lxm, "\n*** can't eval constant: "^msg))
-prof/evalConst.ml:448:    else (* 0 *) raise(EvalArray_error(
-prof/evalConst.ml:477:              | [x] -> (* 0 *) raise(EvalArray_error(
-prof/evalConst.ml:480:              | _ -> (* 0 *) raise(EvalArray_error(
-prof/evalConst.ml:483:        | None -> (* 25 *) if (first_ix <= last_ix) then (* 25 *) 1 else (* 0 *) -1
-prof/evalConst.ml:490:        (* 0 *) let msg = sprintf "bad array slice [%d..%d] step %d" first_ix last_ix step in
-prof/evalConst.ml:498:            (* 0 *) warning lxm (sprintf "last index out of slice [%d..%d step %d]" 
-prof/evalConst.ml:512:        (* 0 *) raise (Compile_error(lxm, "\n*** can't eval constant: "^msg))
-prof/evalType.ml:32:let finish_me msg = (* 0 *) print_string ("\n\tXXX evalType.ml:"^msg^" ->  finish me!\n")
-prof/evalType.ml:40:              (* 0 *) raise (Compile_error(lxm, "type error: "^msg))
-prof/evalType.ml:45:              (* 0 *) raise (Compile_error(lxm, "\n*** can't eval constant: "^msg))
-prof/evalType.ml:79:              (* 0 *) raise (EvalType_error(
-prof/evalType.ml:87:                 | UnifyType.Ko msg -> (* 0 *) raise (Compile_error(lxm, msg))
-prof/evalType.ml:100:      | Eff.CONCAT -> (* 0 *) (
-prof/evalType.ml:103:                (* 0 *) let teff = 
-prof/evalType.ml:105:                    | UnifyType.Equal -> (* 0 *) teff1
-prof/evalType.ml:106:                    | UnifyType.Unif subst -> (* 0 *) subst_type subst teff1
-prof/evalType.ml:107:                    | UnifyType.Ko msg -> (* 0 *) raise (Compile_error(lxm, msg))
-prof/evalType.ml:111:                (* 0 *) raise(EvalType_error(sprintf "arity error: 2 expected instead of %d" 
-prof/evalType.ml:120:                    (* 0 *) raise (EvalType_error
-prof/evalType.ml:125:              | [x] -> (* 0 *) type_error [x] "struct type"
-prof/evalType.ml:126:              | x -> (* 0 *) arity_error x "1"
-prof/evalType.ml:146:                       (* 0 *) raise(EvalType_error(
-prof/evalType.ml:160:               | Base -> (* 0 *) ()
-prof/evalType.ml:175:              | _ -> (* 0 *) raise(EvalType_error("arity error (1 arg expected)"))
-prof/evalType.ml:182:                  (* 0 *) raise(EvalType_error("type mismatch. "))
-prof/evalType.ml:183:              | _ -> (* 0 *) raise(EvalType_error("arity error (2 args expected)"))
-prof/evalType.ml:190:              | _ -> (* 0 *) raise(EvalType_error("arity error (1 arg expected)"))
-prof/evalType.ml:209:          (* 0 *) finish_me "anonymous struct not yet supported"; 
-prof/expandPack.ml:22:            (* 0 *) let msg = Printf.sprintf "bad pack instance: model %s undeclared"
-prof/expandPack.ml:46:                (* 0 *) let msg = Printf.sprintf
-prof/expandPack.ml:57:                            (* 0 *) Lxm.flagit (Named_type_exp idr) arg.src
-prof/expandPack.ml:59:                        | _ -> (* 0 *) instance_error ()
-prof/expandPack.ml:71:                            (* 0 *) ParserUtils.leafexp arg.src (IDENT_n idr) 
-prof/expandPack.ml:73:                        | _ -> (* 0 *) instance_error ()
-prof/expandPack.ml:87:                        | _ -> (* 0 *) instance_error () 
-prof/expandPack.ml:113:                          | None -> (* 0 *) acc
-prof/expandPack.ml:116:                                if List.mem p_flagged acc then (* 0 *) acc else (* 3 *) p_flagged::acc
-prof/expandPack.ml:129:                (* 0 *) raise(Compile_error 
-prof/expandPack.ml:152:                |  None -> (* 0 *) None
-prof/expandPack.ml:161:            ) with Invalid_argument _ -> (* 0 *) (
-prof/getEff.ml:29:              with EvalConst.EvalArray_error msg -> (* 0 *) raise(GetEffType_error msg)
-prof/getEff.ml:32:      (* 0 *) raise (Compile_error(texp.src, "can't eval type: "^msg))
-prof/getEff.ml:53:        (* 0 *) raise (Compile_error(lxm, 
-prof/getEff.ml:63:               (* 0 *) let msg = "type mismatch: \n***\t'" 
-prof/getEff.ml:115:            (* 0 *) let ceff = node_id_solver.id2const idref sa.src in
-prof/getEff.ml:119:            (* 0 *) let teff = node_id_solver.id2type idref sa.src in
-prof/getEff.ml:123:            (* 0 *) let sargs = [] in
-prof/getEff.ml:141:            (* 0 *) let neff = node node_id_solver ne in
-prof/getEff.ml:202:                    (* 0 *) raise (Compile_error(id.src, "bad field name in structure"))
-prof/getEff.ml:204:              | _  -> (* 0 *) raise (Compile_error(id.src, "a structure was expected"))
-prof/getEff.ml:215:              | _ -> (* 0 *) raise (Compile_error(vef.src, "an array was expected"))
-prof/getEff.ml:226:              | _ -> (* 0 *) raise (Compile_error(sif.src, "an array was expected"))
-prof/getEff.ml:246:    | STRUCT_anonymous_n -> (* 0 *) STRUCT_anonymous
-prof/getEff.ml:254:          | Some pn -> (* 0 *) STRUCT (pn, idref)
-prof/getEff.ml:267:    | StaticArgNode _ -> (* 0 *) raise (Compile_error(lxm, "a constant was expected"))
-prof/getEff.ml:276:    | StaticArgNode(CALL_n ne) -> (* 0 *) node id_solver ne
-prof/getEff.ml:283:    | StaticArgConst _ -> (* 0 *) raise (Compile_error(lxm, "a node was expected"))
-prof/getEff.ml:304:          (* 0 *) raise (Compile_error(lxm, "bad arguments number for array iterator"))
-prof/getEff.ml:357:      | CONCAT_n -> (* 0 *) Eff.CONCAT
-prof/getEff.ml:368:      | WHEN_n Base -> (* 0 *) Eff.WHEN Base
-prof/getEff.ml:373:                | Some _ -> (* 0 *) cc
-prof/getEff.ml:391:                  (* 0 *) raise (Compile_error(
-prof/getEff.ml:410:                  (* 0 *) raise (Compile_error(
-prof/getEff.ml:429:      | MERGE_n(id, idl) -> (* 0 *) Eff.MERGE(id, idl)
-prof/getEff.ml:449:             (* 0 *) let msg = "type mismatch: \n\tthe content of the assertion is of type " 
-prof/getEff.ml:467:              (* 0 *) let msg = "clock error: assert should be on the base clock, "^
-prof/ident.ml:105:    | _ -> (* 0 *) raise (Failure ("idref_of_string: \""^s^"\" not a proper ident")) 
-prof/ident.ml:111:        [i] -> (* 0 *) !dft_pack_name, i
-prof/ident.ml:113:      | _ -> (* 0 *) raise (Failure ("idref_of_string: \""^s^"\" not a proper ident")) 
-prof/ident.ml:130:    (* 0 *) match pack_of_idref idr with
-prof/ident.ml:131:        Some p -> (* 0 *) (p, name_of_idref idr)
-prof/ident.ml:132:      | None   -> (* 0 *) (!dft_pack_name, name_of_idref idr)
-prof/lazyCompiler.ml:10:let finish_me msg = (* 0 *) print_string ("\n\tXXX LazyCompiler:"^msg^" ->  finish me!\n")
-prof/lazyCompiler.ml:22:    | [] -> (* 0 *) "nostack" 
-prof/lazyCompiler.ml:158:          (* 0 *) print_string ("*** " ^ (Ident.string_of_long lid) ^ "???\n" ^ 
-prof/lazyCompiler.ml:196:      | Eff.Incorrect -> (* 0 *) raise (BadCheckRef_error)
-prof/lazyCompiler.ml:200:  lookup_x_eff "type ref "  (fun k -> (* 0 *) k)
-prof/lazyCompiler.ml:240:            (* 0 *) (raise (Compile_error(lxm,"unbounded " ^ x_label ^ " ident")))
-prof/lazyCompiler.ml:304:        (* 0 *) raise(Compile_error (
-prof/lazyCompiler.ml:324:              (* 0 *) raise(Compile_error (const_def.src, " constant values mismatch"))
-prof/lazyCompiler.ml:328:              (* 0 *) raise(Compile_error (
-prof/lazyCompiler.ml:345:              (* 0 *) raise(Compile_error (
-prof/lazyCompiler.ml:386:                                    (* 0 *) raise 
-prof/lazyCompiler.ml:394:                                (* 0 *) raise (Compile_error(field_def.src,
-prof/lazyCompiler.ml:410:          (* 0 *) if (root = type_name) then (* 0 *) recursion_error type_def.src stack else
-prof/lazyCompiler.ml:411:            (* 0 *) raise ( Recursion_error (root, ("type ref "^(Lxm.details lxm))::stack))
-prof/lazyCompiler.ml:456:                              (* 0 *) raise 
-prof/lazyCompiler.ml:464:                | _::_ -> (* 0 *) raise (Compile_error(const_def.src, 
-prof/lazyCompiler.ml:498:        (* 0 *) raise(Compile_error (node_def.src, msg_prefix ^ " ??? "))
-prof/lazyCompiler.ml:503:        (* 0 *) let msg = msg_prefix ^ "bad input profile. \n*** " ^ 
-prof/lazyCompiler.ml:513:        (* 0 *) let msg = msg_prefix ^ "bad output profile. \n*** " ^ 
-prof/lazyCompiler.ml:522:        (* 0 *) raise(Compile_error (node_def.src, msg_prefix ^ " node or function?"))
-prof/lazyCompiler.ml:526:        (* 0 *) raise(Compile_error (node_def.src, msg_prefix ^ "safe or unsafe?"))
-prof/lazyCompiler.ml:532:        (* 0 *) raise(Compile_error (node_def.src, msg_prefix ^ "abstract or not?"))
-prof/lazyCompiler.ml:623:                              (* 0 *) aux acc tail 
-prof/lazyCompiler.ml:632:                              (* 0 *) raise (
-prof/lazyCompiler.ml:736:                    (* 0 *) raise (Compile_error (lxm, "Can not alias 'nor' nor '#', sorry"))
-prof/lazyCompiler.ml:763:                    (* 0 *) raise (Compile_error (lxm, "can not alias this operator, sorry"))
-prof/lazyCompiler.ml:780:                      | UnifyType.Ko msg -> (* 0 *) raise(Compile_error(lxm, msg))
-prof/lazyCompiler.ml:783:                            | UnifyType.Ko msg -> (* 0 *) raise(Compile_error (lxm, msg))
-prof/lazyCompiler.ml:788:    let res = if !Global.one_op_per_equation then (* 798 *) Split.node res else (* 0 *) res in
-prof/licDump.ml:76:    | Extern_const_eff (s,t,vopt) -> (* 0 *) (long s) ^ (string_of_const_eff_opt vopt)
-prof/licDump.ml:77:    | Enum_const_eff   (s,t) -> (* 0 *) (long s)
-prof/licDump.ml:78:    | Struct_const_eff (fl, t) -> (* 0 *) (
-prof/licDump.ml:81:	    (* 0 *) (Ident.to_string id)^" = "^(string_of_const_eff veff)
-prof/licDump.ml:93:  | None -> (* 0 *) ""
-prof/licDump.ml:94:  | Some val_exp_eff -> (* 0 *) string_of_const_eff val_exp_eff
-prof/licDump.ml:100:  | External_type_eff i -> (* 0 *) long i
-prof/licDump.ml:118:  | Any -> (* 0 *) "a"
-prof/licDump.ml:119:  | Overload -> (* 0 *) "o"
-prof/licDump.ml:233:  | []  -> (* 0 *) ""
-prof/licDump.ml:234:  | [x] -> (* 0 *) string_of_type_eff x
-prof/licDump.ml:235:  | l   -> (* 0 *) String.concat " * " (List.map string_of_type_eff l)
-prof/licDump.ml:259:    | TypeStaticArgEff  (id, teff) -> (* 0 *) sprintf "%s" (string_of_type_eff teff)
-prof/licDump.ml:261:	(* 0 *) sprintf "%s" (string_of_node_key_rec opeff.node_key_eff)
-prof/licDump.ml:267:    | TypeStaticArgEff  (id, teff) -> (* 0 *) sprintf "%s" (string_of_type_eff teff)
-prof/licDump.ml:276:              | None -> (* 0 *) None
-prof/licDump.ml:288:  fun x -> (* 0 *) (string_of_type_eff x.var_type_eff) ^ 
-prof/licDump.ml:371:                | Some _ ->  (* 0 *) idref
-prof/licDump.ml:384:	    (* 0 *) (string_of_val_exp_eff ve1) ^ " | " ^ (string_of_val_exp_eff ve2)
-prof/licDump.ml:430:        (* 0 *) ("(" ^ str ^ ")")
-prof/licDump.ml:440:               | Some pn -> (* 0 *) Ident.string_of_idref idref
-prof/licDump.ml:445:	 | STRUCT_anonymous -> (* 0 *) "") ^
-prof/licDump.ml:456:  | SyntaxTreeCore.Base -> (* 0 *) "base"
-prof/licDump.ml:509:    | AbstractEff -> (* 0 *) []
-prof/licDump.ml:551:	 | AbstractEff -> (* 0 *) ""
-prof/licDump.ml:553:	     (* 672 *) ((match neff.loclist_eff with None -> (* 0 *) "" | Some [] -> (* 174 *) ""
-prof/licDump.ml:600:let node_error_string lxm nkey = (* 0 *) (
-prof/licDump.ml:607:let print_compile_node_error nkey lxm msg = (* 0 *) (
-prof/licDump.ml:613:let print_global_node_error lxm nkey msg = (* 0 *) (
-prof/lxm.ml:28:let cstart x = (* 0 *) (x._cstart)
-prof/lxm.ml:29:let cend x = (* 0 *) (x._cend)
-prof/lxm.ml:30:let file x = (* 0 *) x._file
-prof/lxm.ml:31:let pragma x = (* 0 *) x._pragma
-prof/main.ml:67:  ( "--output-file", Arg.String(fun x -> (* 0 *) Global.outfile := x), "<file>"
-prof/main.ml:69:  ( "-o", Arg.String(fun x -> (* 0 *) Global.outfile := x),
-prof/main.ml:72:  ( "--node", Arg.String(fun x -> (* 0 *) Global.main_node := x),
-prof/main.ml:75:  ( "-n", Arg.String(fun x -> (* 0 *) Global.main_node := x),
-prof/main.ml:83:      (function x -> (* 0 *) Global.compile_all_items := true),
-prof/main.ml:89:  ( "--verbose", Arg.Unit (fun vl -> (* 0 *) Verbose.set_level 1 ),
-prof/main.ml:92:  ( "-v", Arg.Unit (fun vl -> (* 0 *) Verbose.set_level 1 ),
-prof/main.ml:95:  ( "--verbose-level", Arg.Int(fun vl -> (* 0 *) Verbose.set_level vl ), "<int>"
-prof/main.ml:101:  ( "--keep-nested-calls", Arg.Unit (fun _ -> (* 0 *) Global.one_op_per_equation := false),
-prof/main.ml:106:  ("-h", Arg.Unit (fun _ -> (* 0 *) (Arg.usage arg_list usage_msg; exit 0)), "" );
-prof/main.ml:108:  ("--help", Arg.Unit (fun _ -> (* 0 *) (Arg.usage arg_list usage_msg; exit 0)),
-prof/main.ml:146:                  with _ -> (* 0 *) print_string ("*** '"^infile^"': bad file name.\n"); exit 1
-prof/main.ml:168:                        (* 0 *) print_string ("old-style (un-packaged) lustre files can " ^
-prof/main.ml:192:  if Sys.file_exists !Global.outfile then (* 0 *) Sys.remove !Global.outfile;
-prof/main.ml:202:  if (!Global.infiles = []) then (* 0 *) (
-prof/main.ml:210:        (* 0 *) Some (Ident.idref_of_string !Global.main_node)
-prof/main.ml:212:      if !Global.outfile <> "" then (* 0 *) Global.oc := open_out !Global.outfile;
-prof/main.ml:231:        (* 0 *) prerr_string (
-prof/main.ml:235:            (if List.length !Global.infiles > 1 then (* 0 *) "s " else (* 0 *) " ") ^
-prof/parserUtils.ml:132:let ternexp lxm op e1 e2 e3 = (* 0 *) CallByPos( {src = lxm ; it = op }, Oper [e1 ; e2; e3] )
-prof/parserUtils.ml:151:    (* 0 *) print_string  ("Parser.idref_of_lxm" ^(Lxm.str lxm));
-prof/parserUtils.ml:463:        (* 0 *) CallByPos(flagit (IDENT_n (Ident.idref_of_string(istr))) lxm,
-prof/predef.ml:67:  | REAL2INT_n -> (* 0 *) "real2int"
-prof/predef.ml:68:  | INT2REAL_n -> (* 0 *) "int2real"
-prof/predef.ml:89:  | IUMINUS_n -> (* 0 *) "-"
-prof/predef.ml:90:  | IMINUS_n -> (* 0 *) "-"
-prof/predef.ml:92:  | ISLASH_n -> (* 0 *) "/"
-prof/predef.ml:93:  | ITIMES_n -> (* 0 *) "*"
-prof/predef.ml:94:  | RUMINUS_n -> (* 0 *) "-"
-prof/predef.ml:95:  | RMINUS_n -> (* 0 *) "-"
-prof/predef.ml:96:  | RPLUS_n -> (* 0 *) "+"
-prof/predef.ml:97:  | RSLASH_n -> (* 0 *) "/"
-prof/predef.ml:98:  | RTIMES_n -> (* 0 *) "*"
-prof/predef.ml:113:  | DIESE_n -> (* 0 *) "diese"
-prof/predef.ml:120:  | IMINUS_n -> (* 0 *) "iminus"
-prof/predef.ml:122:  | ISLASH_n -> (* 0 *) "idiv"
-prof/predef.ml:123:  | ITIMES_n -> (* 0 *) "itimes"
-prof/predef.ml:124:  | RUMINUS_n -> (* 0 *) "ruminus"
-prof/predef.ml:125:  | RMINUS_n -> (* 0 *) "rminus"
-prof/predef.ml:126:  | RPLUS_n -> (* 0 *) "plus"
-prof/predef.ml:127:  | RSLASH_n -> (* 0 *) "rdiv"
-prof/predef.ml:128:  | RTIMES_n -> (* 0 *) "rtimes"
-prof/predef.ml:146:    | "true" -> (* 0 *) TRUE_n
-prof/predef.ml:147:    | "false" -> (* 0 *) FALSE_n
-prof/predef.ml:150:    | "real2int" -> (* 0 *) REAL2INT_n
-prof/predef.ml:151:    | "int2real" -> (* 0 *) INT2REAL_n
-prof/predef.ml:155:    | "xor" -> (* 0 *) XOR_n
-prof/predef.ml:156:    | "impl" -> (* 0 *) IMPL_n
-prof/predef.ml:158:    | "neq" -> (* 0 *) NEQ_n
-prof/predef.ml:159:    | "lt" -> (* 0 *) LT_n
-prof/predef.ml:161:    | "gt" -> (* 0 *) GT_n
-prof/predef.ml:162:    | "gte" -> (* 0 *) GTE_n
-prof/predef.ml:163:    | "div" -> (* 0 *) DIV_n
-prof/predef.ml:164:    | "mod" -> (* 0 *) MOD_n
-prof/predef.ml:168:    | "nor" -> (* 0 *) NOR_n
-prof/predef.ml:169:    | "#" -> (* 0 *) DIESE_n 
-prof/predef.ml:170:    | "diese" -> (* 0 *) DIESE_n
-prof/predef.ml:173:    | "uminus" -> (* 0 *) UMINUS_n
-prof/predef.ml:174:    | "minus" -> (* 0 *) MINUS_n
-prof/predef.ml:176:    | "slash" -> (* 0 *) SLASH_n
-prof/predef.ml:177:    | "times" -> (* 0 *) TIMES_n
-prof/predef.ml:181:    | "iminus" -> (* 0 *) IMINUS_n
-prof/predef.ml:183:    | "islash" -> (* 0 *) ISLASH_n
-prof/predef.ml:184:    | "itimes" -> (* 0 *) ITIMES_n
-prof/predef.ml:186:    | "ruminus" -> (* 0 *) RUMINUS_n
-prof/predef.ml:187:    | "rminus" -> (* 0 *) RMINUS_n
-prof/predef.ml:188:    | "rplus" -> (* 0 *) RPLUS_n
-prof/predef.ml:189:    | "rslash" -> (* 0 *) RSLASH_n
-prof/predef.ml:190:    | "rtimes" -> (* 0 *) RTIMES_n
-prof/predefEvalConst.ml:16:    (* 0 *) raise (EvalConst_error(
-prof/predefEvalConst.ml:17:             "type mismatch "^(if expect = "" then (* 0 *) "" else (* 0 *) (expect^" expected"))))
-prof/predefEvalConst.ml:22:    (* 0 *) raise (EvalConst_error(
-prof/predefEvalConst.ml:24:               (List.length v) (if List.length v>1 then (* 0 *) "s" else (* 0 *) "") expect))
-prof/predefEvalConst.ml:51:  fun op -> fun ll -> (* 0 *) match List.flatten ll with
-prof/predefEvalConst.ml:52:    | [Real_const_eff v0; Real_const_eff v1] -> (* 0 *) [Real_const_eff (op v0 v1)]
-prof/predefEvalConst.ml:61:  fun op -> fun ll -> (* 0 *) match List.flatten ll with
-prof/predefEvalConst.ml:62:    | [Int_const_eff v0] -> (* 0 *) [Int_const_eff (op v0)]
-prof/predefEvalConst.ml:66:  fun op -> fun ll -> (* 0 *) match List.flatten ll with
-prof/predefEvalConst.ml:67:    | [Real_const_eff v0] -> (* 0 *) [Real_const_eff (op v0)]
-prof/predefEvalConst.ml:82:      (* 0 *) raise (EvalConst_error(
-prof/predefEvalConst.ml:91:      (* 0 *) raise (EvalConst_error(
-prof/predefEvalConst.ml:100:  fun op -> fun ll -> (* 0 *) match List.flatten ll with
-prof/predefEvalConst.ml:101:    | [Real_const_eff v0] -> (* 0 *) [Int_const_eff (op v0)]
-prof/predefEvalConst.ml:105:  fun op -> fun ll -> (* 0 *) match List.flatten ll with
-prof/predefEvalConst.ml:106:    | [Int_const_eff v0] -> (* 0 *) [Real_const_eff (op v0)]
-prof/predefEvalConst.ml:137:      | REAL2INT_n -> (* 0 *) fi_evaluator int_of_float ll
-prof/predefEvalConst.ml:138:      | INT2REAL_n -> (* 0 *) if_evaluator float_of_int ll
-prof/predefEvalConst.ml:144:      | NEQ_n  -> (* 0 *) aab_evaluator (<>) ll 
-prof/predefEvalConst.ml:145:      | LT_n   -> (* 0 *) aab_evaluator (<) ll
-prof/predefEvalConst.ml:146:      | LTE_n  -> (* 0 *) aab_evaluator (<=) ll
-prof/predefEvalConst.ml:148:      | GTE_n  -> (* 0 *) aab_evaluator (>=) ll
-prof/predefEvalConst.ml:157:      | IUMINUS_n  -> (* 0 *) ii_evaluator (fun x -> (* 0 *) -x) ll
-prof/predefEvalConst.ml:158:      | IMINUS_n -> (* 0 *) iii_evaluator (-) ll
-prof/predefEvalConst.ml:159:      | IPLUS_n  -> (* 0 *) iii_evaluator (+) ll
-prof/predefEvalConst.ml:160:      | ISLASH_n -> (* 0 *) iii_evaluator (/) ll
-prof/predefEvalConst.ml:161:      | ITIMES_n -> (* 0 *) iii_evaluator ( * ) ll
-prof/predefEvalConst.ml:162:      | RUMINUS_n -> (* 0 *) ff_evaluator (fun x -> (* 0 *) -.x) ll
-prof/predefEvalConst.ml:163:      | RMINUS_n -> (* 0 *) fff_evaluator (-.) ll
-prof/predefEvalConst.ml:164:      | RPLUS_n  -> (* 0 *) fff_evaluator (+.) ll
-prof/predefEvalConst.ml:165:      | RSLASH_n -> (* 0 *) fff_evaluator (/.) ll
-prof/predefEvalConst.ml:166:      | RTIMES_n -> (* 0 *) fff_evaluator ( *.) ll
-prof/predefEvalConst.ml:167:      | NOR_n   -> (* 0 *) boolred_evaluator 0 ll
-prof/predefEvalConst.ml:173:      | BoolRed -> (* 0 *) boolred_evaluator 1 ll
-prof/predefEvalType.ml:19:    (* 0 *) let str_l = List.map LicDump.string_of_type_eff tel in
-prof/predefEvalType.ml:23:                  (if expect = "" then (* 0 *) "" 
-prof/predefEvalType.ml:24:                   else (* 0 *) (" whereas\n*** type '" ^expect^"' was expected")))))
-prof/predefEvalType.ml:30:                (if expect = "" then (* 0 *) "" 
-prof/predefEvalType.ml:32:                (if msg = "" then (* 0 *) "" else (* 1 *) ("\n*** " ^ msg)))))
-prof/predefEvalType.ml:36:    (* 0 *) raise (EvalType_error(
-prof/predefEvalType.ml:38:             (List.length v) (if List.length v>1 then (* 0 *) "s" else (* 0 *) "") expect))
-prof/predefEvalType.ml:125:        (* 0 *) match UnifyType.f [t1] [t2] with
-prof/predefEvalType.ml:126:          | Equal  -> (* 0 *) (lti,lto)
-prof/predefEvalType.ml:128:              (* 0 *) (List.map (fun (id,tid) -> (* 0 *) id, subst_type t tid) lti,
-prof/predefEvalType.ml:129:               List.map (fun (id,tid) -> (* 0 *) id, subst_type t tid) lto)
-prof/predefEvalType.ml:130:          | Ko(msg) -> (* 0 *) raise (Compile_error(lxm, msg))
-prof/predefEvalType.ml:169:          | _ -> (* 0 *) raise (Compile_error(lxm, "\n*** type error: 3 int were expected"))
-prof/predefEvalType.ml:187:        | REAL2INT_n       -> (* 0 *) ri_profile
-prof/predefEvalType.ml:188:        | INT2REAL_n       -> (* 0 *) ir_profile
-prof/predefEvalType.ml:192:        | RUMINUS_n        -> (* 0 *) rr_profile
-prof/predefEvalType.ml:196:        | RMINUS_n | RPLUS_n | RTIMES_n | RSLASH_n                 -> (* 0 *) rrr_profile
-prof/predefEvalType.ml:258:                    (* 0 *) (type_error (List.flatten [[Bool_type_eff]; t; e]) "bool*any*any")
-prof/predefEvalType.ml:259:              | x -> (* 0 *) (arity_error x "3")
-prof/predefEvalType.ml:266:                (* 93 *) acc | _ -> (* 0 *) (type_error [ceff] "bool")
-prof/predefEvalType.ml:277:                (* 0 *) arity_error [l] (string_of_int (List.length lti))
-prof/predefEvalType.ml:282:                      (* 0 *) type_error2 
-prof/predefEvalType.ml:287:                      (* 0 *) type_error2 
-prof/solveIdent.ml:77:	| Some op -> (* 0 *) Predef_n (op,[])
-prof/solveIdent.ml:111:  | EnumConst(id,te) -> (* 0 *) EnumConst(id,te)
-prof/solveIdent.ml:119:  | ArrayType(id,te,ve) -> (* 0 *) ArrayType(id,te, r_val_exp ve)
-prof/split.ml:37:  | CallByPosEff({ it = Eff.FBY }, _) -> (* 0 *) true
-prof/split.ml:39:  | CallByPosEff({ it = Eff.CURRENT }, _) -> (* 0 *) true
-prof/symbolTab.ml:36:    (* 0 *) raise (Compile_error(lxm, "unknown type (" ^ (Ident.to_string id)^")"))
-prof/symbolTab.ml:41:    (* 0 *) raise (Compile_error(lxm, "unknown type (" ^ (Ident.to_string id)^")"))
-prof/symbolTab.ml:61:      (* 0 *) raise (Global_error("Can not find node " ^ (Ident.to_string id)^
-prof/syntaxTab.ml:97:      (* 0 *) print_string ("*** Can not find package '" ^ 
-prof/syntaxTab.ml:100:	(fun pn pm -> (* 0 *) print_string ("\n***\t - '"^(Ident.pack_name_to_string pn)^ "'"))
-prof/syntaxTab.ml:111:    with Not_found -> (* 0 *) raise(Compile_error(lxm, ""))
-prof/syntaxTab.ml:313:	with Not_found -> (* 0 *) raise(Compile_error(lxm, "unknown package"))
-prof/syntaxTab.ml:378:  (* 0 *) print_string "*** not implemented.\n";
-prof/syntaxTab.ml:382:  (* 0 *) print_string "*** not implemented.\n";
-prof/syntaxTab.ml:386:  (* 0 *) print_string "*** not implemented.\n";
-prof/syntaxTab.ml:394:    (* 0 *) let p = Verbose.print_string ~level:3 in
-prof/syntaxTab.ml:400:	(fun pm -> (* 0 *) p (SyntaxTree.pack_or_model_to_string pm); p "\n\t\t") 
-prof/syntaxTab.ml:406:	(fun id _mi -> (* 0 *) p ((Ident.to_string id) ^ " "))
-prof/syntaxTab.ml:412:	(fun pn pi -> (* 0 *) p ((Ident.pack_name_to_string pn) ^ " ")) 
-prof/syntaxTab.ml:418:	(fun pn pm -> (* 0 *) p ((Ident.pack_name_to_string pn) ^ " ")) 
-prof/syntaxTree.ml:124:  | LeftVar sflg -> (* 0 *) sflg.src
-prof/syntaxTree.ml:125:  | LeftField (x, _) -> (* 0 *) lexeme_of_left_part x 
-prof/syntaxTree.ml:126:  | LeftArray (x, _) -> (* 0 *) lexeme_of_left_part x
-prof/syntaxTree.ml:127:  | LeftSlice (x, _) -> (* 0 *) lexeme_of_left_part x
-prof/syntaxTree.ml:133:    | NSPack  pi -> (* 0 *) Ident.pack_name_to_string pi.it.pa_name ^ " (pack) "
-prof/syntaxTree.ml:134:    | NSModel mi -> (* 0 *) Ident.pack_name_to_string mi.it.mo_name ^ " (model) "
-prof/unifyClock.ml:27:    (* 1749 *) if List.mem_assoc i s then (* 0 *) s else (* 1749 *) (i,c)::s
-prof/unifyType.ml:47:	      (* 1766 *) if l1 <> l2 then (* 0 *) Ko "\n*** incompatible structure" else
-prof/unifyType.ml:107:  | Ko(msg) -> (* 0 *) msg
-prof/unifyType.ml:108:  | Equal -> (* 0 *) "types are equals\n"
-prof/unifyType.ml:109:  | Unif t -> (* 0 *) "types are unifiable via " ^ (teff2str t) ^ "\n"
-prof/uniqueOutput.ml:64:    (* 0 *) let rec aux vds v acc = (* 0 *) match vds with
-prof/uniqueOutput.ml:65:      | VDS_def -> (* 0 *) acc
-prof/uniqueOutput.ml:66:      | VDS_undef -> (* 0 *) v::acc
-prof/uniqueOutput.ml:68:	  (* 0 *) List.fold_left (fun acc (id,vds) -> (* 0 *) aux vds (v^"."^(id2str id)) acc) acc fl
-prof/uniqueOutput.ml:69:      | VDS_array(a) -> (* 0 *) fst
-prof/uniqueOutput.ml:71:	     (fun (acc,i) vds -> (* 0 *) aux vds (v^"["^(int2str i) ^"]") acc, i+1) (acc,0) a)
-prof/uniqueOutput.ml:83:	  (* 0 *) let msg = "\n*** Variable " ^ v ^ " is defined twice." in 
-prof/uniqueOutput.ml:186:		(* 0 *) let msg = "\n*** Undefined variable(s): " ^ 
-prof/uniqueOutput.ml:201:		     (* 0 *) let msg = "\n*** Error; " ^(id2str v.var_name_eff) ^ 
-prof/uniqueOutput.ml:211:		     (* 0 *) let msg = "\n*** Undefined variable: " ^ (id2str v.var_name_eff)
-prof/verbose.ml:34:  (fun t -> (* 2837 *) if (!_level >= level) then (* 0 *) (print_string t; flush stdout) else (* 2837 *) ()) s
+prof/compile.ml:31:    if Verbose.get_level () > 2 then (* ocamlprof: 0 *) SyntaxTab.dump syntax_tab;
+prof/compile.ml:38:          (* ocamlprof: 0 *) let main_node_key = 
+prof/compile.ml:46:              (* ocamlprof: 0 *) LazyCompiler.compile_all lzcomp
+prof/compile.ml:48:              (* ocamlprof: 0 *) ignore(LazyCompiler.node_check lzcomp main_node_key 
+prof/compile.ml:50:                          | None -> (* ocamlprof: 0 *) Lxm.dummy "" 
+prof/compile.ml:51:                          | Some pn  -> (* ocamlprof: 0 *) Lxm.dummy (Ident.pack_name_to_string pn)))
+prof/eff.ml:424:    | On(cid1,_), On(cid2,_) -> (* ocamlprof: 0 *) cid1 = cid2
+prof/eff.ml:437:  fun nkey -> (* ocamlprof: 0 *) (nkey, [])
+prof/eff.ml:446:    | Enum_type_eff(l,el) ->  (* ocamlprof: 0 *) Enum_type_eff(l,el)
+prof/eff.ml:463:    | Struct_const_eff (fl, teff) -> (* ocamlprof: 0 *) teff
+prof/errors.ml:123:let warning lxm msg = (* ocamlprof: 0 *) (
+prof/errors.ml:138:let print_internal_error fnme msg = (* ocamlprof: 0 *) (
+prof/evalClock.ml:139:      | On(_,_), BaseEff -> (* ocamlprof: 0 *) None
+prof/evalClock.ml:144:          with _ -> (* ocamlprof: 0 *) is_a_sub_clock lxm s (id_sc,sc) (id_c,clk2) 
+prof/evalClock.ml:150:          (* ocamlprof: 0 *) let s1,s2 = s in 
+prof/evalClock.ml:154:          (* ocamlprof: 0 *) let s1,s2 = s in 
+prof/evalClock.ml:196:        | id, On(v, ClockVar _) -> (* ocamlprof: 0 *) id, On(v, BaseEff)
+prof/evalClock.ml:206:      (* ocamlprof: 0 *) print_string "*** No entry for '";
+prof/evalClock.ml:243:            (* ocamlprof: 0 *) raise (Compile_error(lxm, "\n*** can't eval constant: "^msg))
+prof/evalClock.ml:266:              | [id, BaseEff] -> (* ocamlprof: 0 *) [id, BaseEff],s
+prof/evalClock.ml:273:              | Base -> (* ocamlprof: 0 *) BaseEff, BaseEff
+prof/evalClock.ml:293:                  (* ocamlprof: 0 *) let msg = "\n*** clock error: '" ^ (ci2str (snd exp_clk)) ^ 
+prof/evalClock.ml:364:                  | ClockVar i -> (* ocamlprof: 0 *) ci
+prof/evalConst.ml:26:let finish_me msg = (* ocamlprof: 0 *) print_string ("\n\tXXX evalConst.ml:"^msg^" ->  finish me!\n")
+prof/evalConst.ml:29:  (* ocamlprof: 0 *) raise (EvalConst_error(
+prof/evalConst.ml:45:    (* ocamlprof: 0 *) let get_res (ix : int) = (* ocamlprof: 0 *) Array.get ctab (slice.se_first + ix*slice.se_step) in
+prof/evalConst.ml:52:    (* ocamlprof: 0 *) let expected_type = ref None in
+prof/evalConst.ml:54:      (* ocamlprof: 0 *) match op with
+prof/evalConst.ml:55:        | [x] -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:59:                | None -> (* ocamlprof: 0 *) expected_type := Some xtyp; x
+prof/evalConst.ml:60:                | Some t -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:61:                    if (t = xtyp) then (* ocamlprof: 0 *) x else 
+prof/evalConst.ml:62:                      (* ocamlprof: 0 *) raise (EvalConst_error(
+prof/evalConst.ml:70:            (* ocamlprof: 0 *) raise (EvalConst_error("array of tuple not allowed"))
+prof/evalConst.ml:74:        | None -> (* ocamlprof: 0 *) raise (EvalConst_error("empty array"))
+prof/evalConst.ml:75:        | Some t -> (* ocamlprof: 0 *) Array_const_eff(res, t)
+prof/evalConst.ml:86:  (* ocamlprof: 0 *) (
+prof/evalConst.ml:89:        Struct_type_eff (tnm, flst) -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:91:          let make_eff_field ((fn: Ident.t),((ft:Eff.type_),(fv:Eff.const option))) = (* ocamlprof: 0 *) (
+prof/evalConst.ml:95:                  (lxm, v) -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:99:                      if (vt = ft) then (* ocamlprof: 0 *) (fn, v) (*ok*)
+prof/evalConst.ml:100:                      else (* ocamlprof: 0 *) raise (Compile_error(
+prof/evalConst.ml:109:            ) with Not_found -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:112:                  Some v -> (* ocamlprof: 0 *) (fn, v) (* ok : v correcte par construction *)
+prof/evalConst.ml:114:                    (* ocamlprof: 0 *) raise (EvalConst_error(
+prof/evalConst.ml:125:              = (* ocamlprof: 0 *) raise(Compile_error(
+prof/evalConst.ml:137:      | _ -> (* ocamlprof: 0 *) raise (EvalConst_error(
+prof/evalConst.ml:175:          | SyntaxTreeCore.CallByName ({it=nmop; src=lxm}, nmargs ) -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:178:                (* ocamlprof: 0 *) raise (Compile_error(lxm, "\n*** can't eval constant: "^msg))
+prof/evalConst.ml:206:              | WITH_n(a0,a1,a2) -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:208:                      [ Bool_const_eff true] -> (* ocamlprof: 0 *) rec_eval_const a1
+prof/evalConst.ml:209:                    | [ Bool_const_eff false] -> (* ocamlprof: 0 *) rec_eval_const a2
+prof/evalConst.ml:210:                    | x -> (* ocamlprof: 0 *) type_error_const x "bool"
+prof/evalConst.ml:213:              | TUPLE_n -> (* ocamlprof: 0 *) ( List.flatten (List.map rec_eval_const args))
+prof/evalConst.ml:225:                                  (* ocamlprof: 0 *) raise (EvalConst_error("array of tuple not allowed"))
+prof/evalConst.ml:227:                            EvalArray_error msg -> (* ocamlprof: 0 *) raise(EvalConst_error msg)
+prof/evalConst.ml:229:                    | _ -> (* ocamlprof: 0 *) raise(EvalConst_error
+prof/evalConst.ml:233:              | CONCAT_n -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:237:                         [Array_const_eff (v1, t1)]] -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:239:                            (* ocamlprof: 0 *) [Array_const_eff (Array.append v0 v1, t0)]  
+prof/evalConst.ml:241:                            (* ocamlprof: 0 *) raise(EvalConst_error(
+prof/evalConst.ml:249:                          (* ocamlprof: 0 *) raise(EvalConst_error(
+prof/evalConst.ml:251:                      | _ -> (* ocamlprof: 0 *) raise(EvalConst_error
+prof/evalConst.ml:255:              | ARRAY_n -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:262:                      | [Array_const_eff (elts, typelts)] -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:267:                          with EvalArray_error msg -> (* ocamlprof: 0 *) raise(EvalConst_error msg)
+prof/evalConst.ml:269:                      |  _  -> (* ocamlprof: 0 *) type_error_const effargs "some array"
+prof/evalConst.ml:271:              | ARRAY_SLICE_n sl -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:274:                      | [Array_const_eff (l, t)] -> (* ocamlprof: 0 *) (l, t) 
+prof/evalConst.ml:275:                      | x -> (* ocamlprof: 0 *) type_error_const x "some array"
+prof/evalConst.ml:284:                        EvalArray_error msg -> (* ocamlprof: 0 *) raise(EvalConst_error msg)
+prof/evalConst.ml:288:                  (* ocamlprof: 0 *) let ceff_list = List.flatten (List.map rec_eval_const args) in
+prof/evalConst.ml:290:                       | [Struct_const_eff (flst, typ)] -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:293:                             (* ocamlprof: 0 *) raise (EvalConst_error
+prof/evalConst.ml:298:                       | [x] -> (* ocamlprof: 0 *) type_error_const [x] "struct type"
+prof/evalConst.ml:299:                       | x -> (* ocamlprof: 0 *) arity_error_const x "1"
+prof/evalConst.ml:302:              | CALL_n _ -> (* ocamlprof: 0 *) not_evaluable_construct "node call"
+prof/evalConst.ml:303:              | MERGE_n _ -> (* ocamlprof: 0 *) not_evaluable_construct "merge"
+prof/evalConst.ml:304:              | WHEN_n _ -> (* ocamlprof: 0 *) not_evaluable_construct "when"
+prof/evalConst.ml:305:              | FBY_n -> (* ocamlprof: 0 *) not_evaluable_construct "fby"
+prof/evalConst.ml:306:              | ARROW_n -> (* ocamlprof: 0 *) not_evaluable_construct "->"
+prof/evalConst.ml:307:              | CURRENT_n -> (* ocamlprof: 0 *) not_evaluable_construct "current"
+prof/evalConst.ml:308:              | PRE_n -> (* ocamlprof: 0 *) not_evaluable_construct "pre"
+prof/evalConst.ml:317:                    (* ocamlprof: 0 *) not_evaluable_construct (op2string op)
+prof/evalConst.ml:331:          = (* ocamlprof: 0 *) (
+prof/evalConst.ml:334:                  (* ocamlprof: 0 *) finish_me "anonymous struct"; 
+prof/evalConst.ml:337:              | STRUCT_n opid -> (* ocamlprof: 0 *) (
+prof/evalConst.ml:341:                    (* ocamlprof: 0 *) if 
+prof/evalConst.ml:344:                      (* ocamlprof: 0 *) raise(EvalConst_error(
+prof/evalConst.ml:350:                      (* ocamlprof: 0 *) let v = rec_eval_const pexp in
+prof/evalConst.ml:352:                          | [x] -> (* ocamlprof: 0 *) Hashtbl.add arg_tab pid.it (pid.src, x)
+prof/evalConst.ml:354:                              (* ocamlprof: 0 *) raise(
+prof/evalConst.ml:367:                      (* ocamlprof: 0 *) raise(EvalConst_error(
+prof/evalConst.ml:398:            (* ocamlprof: 0 *) raise(EvalArray_error(sprintf "bad array size %d" sz))
+prof/evalConst.ml:400:          (* ocamlprof: 0 *) raise(EvalArray_error(sprintf  "bad array size, int expected but get %s"
+prof/evalConst.ml:403:          (* ocamlprof: 0 *) raise(EvalArray_error(sprintf "bad array size, int expected, not a tuple"))
+prof/evalConst.ml:431:            (* ocamlprof: 0 *) raise(EvalArray_error("The extern const " ^ (Ident.string_of_long id) ^ 
+prof/evalConst.ml:434:        | [x] -> (* ocamlprof: 0 *) raise(EvalArray_error(sprintf 
+prof/evalConst.ml:438:        | _ -> (* ocamlprof: 0 *) raise(EvalArray_error(
+prof/evalConst.ml:444:        (* ocamlprof: 0 *) raise (Compile_error(lxm, "\n*** can't eval constant: "^msg))
+prof/evalConst.ml:448:    else (* ocamlprof: 0 *) raise(EvalArray_error(
+prof/evalConst.ml:477:              | [x] -> (* ocamlprof: 0 *) raise(EvalArray_error(
+prof/evalConst.ml:480:              | _ -> (* ocamlprof: 0 *) raise(EvalArray_error(
+prof/evalConst.ml:483:        | None -> (* ocamlprof: 25 *) if (first_ix <= last_ix) then (* ocamlprof: 25 *) 1 else (* ocamlprof: 0 *) -1
+prof/evalConst.ml:490:        (* ocamlprof: 0 *) let msg = sprintf "bad array slice [%d..%d] step %d" first_ix last_ix step in
+prof/evalConst.ml:498:            (* ocamlprof: 0 *) warning lxm (sprintf "last index out of slice [%d..%d step %d]" 
+prof/evalConst.ml:512:        (* ocamlprof: 0 *) raise (Compile_error(lxm, "\n*** can't eval constant: "^msg))
+prof/evalType.ml:32:let finish_me msg = (* ocamlprof: 0 *) print_string ("\n\tXXX evalType.ml:"^msg^" ->  finish me!\n")
+prof/evalType.ml:40:              (* ocamlprof: 0 *) raise (Compile_error(lxm, "type error: "^msg))
+prof/evalType.ml:45:              (* ocamlprof: 0 *) raise (Compile_error(lxm, "\n*** can't eval constant: "^msg))
+prof/evalType.ml:79:              (* ocamlprof: 0 *) raise (EvalType_error(
+prof/evalType.ml:87:                 | UnifyType.Ko msg -> (* ocamlprof: 0 *) raise (Compile_error(lxm, msg))
+prof/evalType.ml:100:      | Eff.CONCAT -> (* ocamlprof: 0 *) (
+prof/evalType.ml:103:                (* ocamlprof: 0 *) let teff = 
+prof/evalType.ml:105:                    | UnifyType.Equal -> (* ocamlprof: 0 *) teff1
+prof/evalType.ml:106:                    | UnifyType.Unif subst -> (* ocamlprof: 0 *) subst_type subst teff1
+prof/evalType.ml:107:                    | UnifyType.Ko msg -> (* ocamlprof: 0 *) raise (Compile_error(lxm, msg))
+prof/evalType.ml:111:                (* ocamlprof: 0 *) raise(EvalType_error(sprintf "arity error: 2 expected instead of %d" 
+prof/evalType.ml:120:                    (* ocamlprof: 0 *) raise (EvalType_error
+prof/evalType.ml:125:              | [x] -> (* ocamlprof: 0 *) type_error [x] "struct type"
+prof/evalType.ml:126:              | x -> (* ocamlprof: 0 *) arity_error x "1"
+prof/evalType.ml:146:                       (* ocamlprof: 0 *) raise(EvalType_error(
+prof/evalType.ml:160:               | Base -> (* ocamlprof: 0 *) ()
+prof/evalType.ml:175:              | _ -> (* ocamlprof: 0 *) raise(EvalType_error("arity error (1 arg expected)"))
+prof/evalType.ml:182:                  (* ocamlprof: 0 *) raise(EvalType_error("type mismatch. "))
+prof/evalType.ml:183:              | _ -> (* ocamlprof: 0 *) raise(EvalType_error("arity error (2 args expected)"))
+prof/evalType.ml:190:              | _ -> (* ocamlprof: 0 *) raise(EvalType_error("arity error (1 arg expected)"))
+prof/evalType.ml:209:          (* ocamlprof: 0 *) finish_me "anonymous struct not yet supported"; 
+prof/expandPack.ml:22:            (* ocamlprof: 0 *) let msg = Printf.sprintf "bad pack instance: model %s undeclared"
+prof/expandPack.ml:46:                (* ocamlprof: 0 *) let msg = Printf.sprintf
+prof/expandPack.ml:57:                            (* ocamlprof: 0 *) Lxm.flagit (Named_type_exp idr) arg.src
+prof/expandPack.ml:59:                        | _ -> (* ocamlprof: 0 *) instance_error ()
+prof/expandPack.ml:71:                            (* ocamlprof: 0 *) ParserUtils.leafexp arg.src (IDENT_n idr) 
+prof/expandPack.ml:73:                        | _ -> (* ocamlprof: 0 *) instance_error ()
+prof/expandPack.ml:87:                        | _ -> (* ocamlprof: 0 *) instance_error () 
+prof/expandPack.ml:113:                          | None -> (* ocamlprof: 0 *) acc
+prof/expandPack.ml:116:                                if List.mem p_flagged acc then (* ocamlprof: 0 *) acc else (* ocamlprof: 3 *) p_flagged::acc
+prof/expandPack.ml:129:                (* ocamlprof: 0 *) raise(Compile_error 
+prof/expandPack.ml:152:                |  None -> (* ocamlprof: 0 *) None
+prof/expandPack.ml:161:            ) with Invalid_argument _ -> (* ocamlprof: 0 *) (
+prof/getEff.ml:29:              with EvalConst.EvalArray_error msg -> (* ocamlprof: 0 *) raise(GetEffType_error msg)
+prof/getEff.ml:32:      (* ocamlprof: 0 *) raise (Compile_error(texp.src, "can't eval type: "^msg))
+prof/getEff.ml:53:        (* ocamlprof: 0 *) raise (Compile_error(lxm, 
+prof/getEff.ml:63:               (* ocamlprof: 0 *) let msg = "type mismatch: \n***\t'" 
+prof/getEff.ml:115:            (* ocamlprof: 0 *) let ceff = node_id_solver.id2const idref sa.src in
+prof/getEff.ml:119:            (* ocamlprof: 0 *) let teff = node_id_solver.id2type idref sa.src in
+prof/getEff.ml:123:            (* ocamlprof: 0 *) let sargs = [] in
+prof/getEff.ml:141:            (* ocamlprof: 0 *) let neff = node node_id_solver ne in
+prof/getEff.ml:202:                    (* ocamlprof: 0 *) raise (Compile_error(id.src, "bad field name in structure"))
+prof/getEff.ml:204:              | _  -> (* ocamlprof: 0 *) raise (Compile_error(id.src, "a structure was expected"))
+prof/getEff.ml:215:              | _ -> (* ocamlprof: 0 *) raise (Compile_error(vef.src, "an array was expected"))
+prof/getEff.ml:226:              | _ -> (* ocamlprof: 0 *) raise (Compile_error(sif.src, "an array was expected"))
+prof/getEff.ml:246:    | STRUCT_anonymous_n -> (* ocamlprof: 0 *) STRUCT_anonymous
+prof/getEff.ml:254:          | Some pn -> (* ocamlprof: 0 *) STRUCT (pn, idref)
+prof/getEff.ml:267:    | StaticArgNode _ -> (* ocamlprof: 0 *) raise (Compile_error(lxm, "a constant was expected"))
+prof/getEff.ml:276:    | StaticArgNode(CALL_n ne) -> (* ocamlprof: 0 *) node id_solver ne
+prof/getEff.ml:283:    | StaticArgConst _ -> (* ocamlprof: 0 *) raise (Compile_error(lxm, "a node was expected"))
+prof/getEff.ml:304:          (* ocamlprof: 0 *) raise (Compile_error(lxm, "bad arguments number for array iterator"))
+prof/getEff.ml:357:      | CONCAT_n -> (* ocamlprof: 0 *) Eff.CONCAT
+prof/getEff.ml:368:      | WHEN_n Base -> (* ocamlprof: 0 *) Eff.WHEN Base
+prof/getEff.ml:373:                | Some _ -> (* ocamlprof: 0 *) cc
+prof/getEff.ml:391:                  (* ocamlprof: 0 *) raise (Compile_error(
+prof/getEff.ml:410:                  (* ocamlprof: 0 *) raise (Compile_error(
+prof/getEff.ml:429:      | MERGE_n(id, idl) -> (* ocamlprof: 0 *) Eff.MERGE(id, idl)
+prof/getEff.ml:449:             (* ocamlprof: 0 *) let msg = "type mismatch: \n\tthe content of the assertion is of type " 
+prof/getEff.ml:467:              (* ocamlprof: 0 *) let msg = "clock error: assert should be on the base clock, "^
+prof/ident.ml:105:    | _ -> (* ocamlprof: 0 *) raise (Failure ("idref_of_string: \""^s^"\" not a proper ident")) 
+prof/ident.ml:111:        [i] -> (* ocamlprof: 0 *) !dft_pack_name, i
+prof/ident.ml:113:      | _ -> (* ocamlprof: 0 *) raise (Failure ("idref_of_string: \""^s^"\" not a proper ident")) 
+prof/ident.ml:130:    (* ocamlprof: 0 *) match pack_of_idref idr with
+prof/ident.ml:131:        Some p -> (* ocamlprof: 0 *) (p, name_of_idref idr)
+prof/ident.ml:132:      | None   -> (* ocamlprof: 0 *) (!dft_pack_name, name_of_idref idr)
+prof/lazyCompiler.ml:10:let finish_me msg = (* ocamlprof: 0 *) print_string ("\n\tXXX LazyCompiler:"^msg^" ->  finish me!\n")
+prof/lazyCompiler.ml:22:    | [] -> (* ocamlprof: 0 *) "nostack" 
+prof/lazyCompiler.ml:158:          (* ocamlprof: 0 *) print_string ("*** " ^ (Ident.string_of_long lid) ^ "???\n" ^ 
+prof/lazyCompiler.ml:196:      | Eff.Incorrect -> (* ocamlprof: 0 *) raise (BadCheckRef_error)
+prof/lazyCompiler.ml:200:  lookup_x_eff "type ref "  (fun k -> (* ocamlprof: 0 *) k)
+prof/lazyCompiler.ml:240:            (* ocamlprof: 0 *) (raise (Compile_error(lxm,"unbounded " ^ x_label ^ " ident")))
+prof/lazyCompiler.ml:304:        (* ocamlprof: 0 *) raise(Compile_error (
+prof/lazyCompiler.ml:324:              (* ocamlprof: 0 *) raise(Compile_error (const_def.src, " constant values mismatch"))
+prof/lazyCompiler.ml:328:              (* ocamlprof: 0 *) raise(Compile_error (
+prof/lazyCompiler.ml:345:              (* ocamlprof: 0 *) raise(Compile_error (
+prof/lazyCompiler.ml:386:                                    (* ocamlprof: 0 *) raise 
+prof/lazyCompiler.ml:394:                                (* ocamlprof: 0 *) raise (Compile_error(field_def.src,
+prof/lazyCompiler.ml:410:          (* ocamlprof: 0 *) if (root = type_name) then (* ocamlprof: 0 *) recursion_error type_def.src stack else
+prof/lazyCompiler.ml:411:            (* ocamlprof: 0 *) raise ( Recursion_error (root, ("type ref "^(Lxm.details lxm))::stack))
+prof/lazyCompiler.ml:456:                              (* ocamlprof: 0 *) raise 
+prof/lazyCompiler.ml:464:                | _::_ -> (* ocamlprof: 0 *) raise (Compile_error(const_def.src, 
+prof/lazyCompiler.ml:498:        (* ocamlprof: 0 *) raise(Compile_error (node_def.src, msg_prefix ^ " ??? "))
+prof/lazyCompiler.ml:503:        (* ocamlprof: 0 *) let msg = msg_prefix ^ "bad input profile. \n*** " ^ 
+prof/lazyCompiler.ml:513:        (* ocamlprof: 0 *) let msg = msg_prefix ^ "bad output profile. \n*** " ^ 
+prof/lazyCompiler.ml:522:        (* ocamlprof: 0 *) raise(Compile_error (node_def.src, msg_prefix ^ " node or function?"))
+prof/lazyCompiler.ml:526:        (* ocamlprof: 0 *) raise(Compile_error (node_def.src, msg_prefix ^ "safe or unsafe?"))
+prof/lazyCompiler.ml:532:        (* ocamlprof: 0 *) raise(Compile_error (node_def.src, msg_prefix ^ "abstract or not?"))
+prof/lazyCompiler.ml:623:                              (* ocamlprof: 0 *) aux acc tail 
+prof/lazyCompiler.ml:632:                              (* ocamlprof: 0 *) raise (
+prof/lazyCompiler.ml:736:                    (* ocamlprof: 0 *) raise (Compile_error (lxm, "Can not alias 'nor' nor '#', sorry"))
+prof/lazyCompiler.ml:763:                    (* ocamlprof: 0 *) raise (Compile_error (lxm, "can not alias this operator, sorry"))
+prof/lazyCompiler.ml:780:                      | UnifyType.Ko msg -> (* ocamlprof: 0 *) raise(Compile_error(lxm, msg))
+prof/lazyCompiler.ml:783:                            | UnifyType.Ko msg -> (* ocamlprof: 0 *) raise(Compile_error (lxm, msg))
+prof/lazyCompiler.ml:788:    let res = if !Global.one_op_per_equation then (* ocamlprof: 798 *) Split.node res else (* ocamlprof: 0 *) res in
+prof/licDump.ml:76:    | Extern_const_eff (s,t,vopt) -> (* ocamlprof: 0 *) (long s) ^ (string_of_const_eff_opt vopt)
+prof/licDump.ml:77:    | Enum_const_eff   (s,t) -> (* ocamlprof: 0 *) (long s)
+prof/licDump.ml:78:    | Struct_const_eff (fl, t) -> (* ocamlprof: 0 *) (
+prof/licDump.ml:81:	    (* ocamlprof: 0 *) (Ident.to_string id)^" = "^(string_of_const_eff veff)
+prof/licDump.ml:93:  | None -> (* ocamlprof: 0 *) ""
+prof/licDump.ml:94:  | Some val_exp_eff -> (* ocamlprof: 0 *) string_of_const_eff val_exp_eff
+prof/licDump.ml:100:  | External_type_eff i -> (* ocamlprof: 0 *) long i
+prof/licDump.ml:118:  | Any -> (* ocamlprof: 0 *) "a"
+prof/licDump.ml:119:  | Overload -> (* ocamlprof: 0 *) "o"
+prof/licDump.ml:233:  | []  -> (* ocamlprof: 0 *) ""
+prof/licDump.ml:234:  | [x] -> (* ocamlprof: 0 *) string_of_type_eff x
+prof/licDump.ml:235:  | l   -> (* ocamlprof: 0 *) String.concat " * " (List.map string_of_type_eff l)
+prof/licDump.ml:259:    | TypeStaticArgEff  (id, teff) -> (* ocamlprof: 0 *) sprintf "%s" (string_of_type_eff teff)
+prof/licDump.ml:261:	(* ocamlprof: 0 *) sprintf "%s" (string_of_node_key_rec opeff.node_key_eff)
+prof/licDump.ml:267:    | TypeStaticArgEff  (id, teff) -> (* ocamlprof: 0 *) sprintf "%s" (string_of_type_eff teff)
+prof/licDump.ml:276:              | None -> (* ocamlprof: 0 *) None
+prof/licDump.ml:288:  fun x -> (* ocamlprof: 0 *) (string_of_type_eff x.var_type_eff) ^ 
+prof/licDump.ml:371:                | Some _ ->  (* ocamlprof: 0 *) idref
+prof/licDump.ml:384:	    (* ocamlprof: 0 *) (string_of_val_exp_eff ve1) ^ " | " ^ (string_of_val_exp_eff ve2)
+prof/licDump.ml:430:        (* ocamlprof: 0 *) ("(" ^ str ^ ")")
+prof/licDump.ml:440:               | Some pn -> (* ocamlprof: 0 *) Ident.string_of_idref idref
+prof/licDump.ml:445:	 | STRUCT_anonymous -> (* ocamlprof: 0 *) "") ^
+prof/licDump.ml:456:  | SyntaxTreeCore.Base -> (* ocamlprof: 0 *) "base"
+prof/licDump.ml:509:    | AbstractEff -> (* ocamlprof: 0 *) []
+prof/licDump.ml:551:	 | AbstractEff -> (* ocamlprof: 0 *) ""
+prof/licDump.ml:553:	     (* ocamlprof: 672 *) ((match neff.loclist_eff with None -> (* ocamlprof: 0 *) "" | Some [] -> (* ocamlprof: 174 *) ""
+prof/licDump.ml:600:let node_error_string lxm nkey = (* ocamlprof: 0 *) (
+prof/licDump.ml:607:let print_compile_node_error nkey lxm msg = (* ocamlprof: 0 *) (
+prof/licDump.ml:613:let print_global_node_error lxm nkey msg = (* ocamlprof: 0 *) (
+prof/lxm.ml:28:let cstart x = (* ocamlprof: 0 *) (x._cstart)
+prof/lxm.ml:29:let cend x = (* ocamlprof: 0 *) (x._cend)
+prof/lxm.ml:30:let file x = (* ocamlprof: 0 *) x._file
+prof/lxm.ml:31:let pragma x = (* ocamlprof: 0 *) x._pragma
+prof/main.ml:67:  ( "--output-file", Arg.String(fun x -> (* ocamlprof: 0 *) Global.outfile := x), "<file>"
+prof/main.ml:69:  ( "-o", Arg.String(fun x -> (* ocamlprof: 0 *) Global.outfile := x),
+prof/main.ml:72:  ( "--node", Arg.String(fun x -> (* ocamlprof: 0 *) Global.main_node := x),
+prof/main.ml:75:  ( "-n", Arg.String(fun x -> (* ocamlprof: 0 *) Global.main_node := x),
+prof/main.ml:83:      (function x -> (* ocamlprof: 0 *) Global.compile_all_items := true),
+prof/main.ml:89:  ( "--verbose", Arg.Unit (fun vl -> (* ocamlprof: 0 *) Verbose.set_level 1 ),
+prof/main.ml:92:  ( "-v", Arg.Unit (fun vl -> (* ocamlprof: 0 *) Verbose.set_level 1 ),
+prof/main.ml:95:  ( "--verbose-level", Arg.Int(fun vl -> (* ocamlprof: 0 *) Verbose.set_level vl ), "<int>"
+prof/main.ml:101:  ( "--keep-nested-calls", Arg.Unit (fun _ -> (* ocamlprof: 0 *) Global.one_op_per_equation := false),
+prof/main.ml:106:  ("-h", Arg.Unit (fun _ -> (* ocamlprof: 0 *) (Arg.usage arg_list usage_msg; exit 0)), "" );
+prof/main.ml:108:  ("--help", Arg.Unit (fun _ -> (* ocamlprof: 0 *) (Arg.usage arg_list usage_msg; exit 0)),
+prof/main.ml:146:                  with _ -> (* ocamlprof: 0 *) print_string ("*** '"^infile^"': bad file name.\n"); exit 1
+prof/main.ml:168:                        (* ocamlprof: 0 *) print_string ("old-style (un-packaged) lustre files can " ^
+prof/main.ml:192:  if Sys.file_exists !Global.outfile then (* ocamlprof: 0 *) Sys.remove !Global.outfile;
+prof/main.ml:202:  if (!Global.infiles = []) then (* ocamlprof: 0 *) (
+prof/main.ml:210:        (* ocamlprof: 0 *) Some (Ident.idref_of_string !Global.main_node)
+prof/main.ml:212:      if !Global.outfile <> "" then (* ocamlprof: 0 *) Global.oc := open_out !Global.outfile;
+prof/main.ml:231:        (* ocamlprof: 0 *) prerr_string (
+prof/main.ml:235:            (if List.length !Global.infiles > 1 then (* ocamlprof: 0 *) "s " else (* ocamlprof: 0 *) " ") ^
+prof/parserUtils.ml:132:let ternexp lxm op e1 e2 e3 = (* ocamlprof: 0 *) CallByPos( {src = lxm ; it = op }, Oper [e1 ; e2; e3] )
+prof/parserUtils.ml:151:    (* ocamlprof: 0 *) print_string  ("Parser.idref_of_lxm" ^(Lxm.str lxm));
+prof/parserUtils.ml:463:        (* ocamlprof: 0 *) CallByPos(flagit (IDENT_n (Ident.idref_of_string(istr))) lxm,
+prof/predef.ml:67:  | REAL2INT_n -> (* ocamlprof: 0 *) "real2int"
+prof/predef.ml:68:  | INT2REAL_n -> (* ocamlprof: 0 *) "int2real"
+prof/predef.ml:89:  | IUMINUS_n -> (* ocamlprof: 0 *) "-"
+prof/predef.ml:90:  | IMINUS_n -> (* ocamlprof: 0 *) "-"
+prof/predef.ml:92:  | ISLASH_n -> (* ocamlprof: 0 *) "/"
+prof/predef.ml:93:  | ITIMES_n -> (* ocamlprof: 0 *) "*"
+prof/predef.ml:94:  | RUMINUS_n -> (* ocamlprof: 0 *) "-"
+prof/predef.ml:95:  | RMINUS_n -> (* ocamlprof: 0 *) "-"
+prof/predef.ml:96:  | RPLUS_n -> (* ocamlprof: 0 *) "+"
+prof/predef.ml:97:  | RSLASH_n -> (* ocamlprof: 0 *) "/"
+prof/predef.ml:98:  | RTIMES_n -> (* ocamlprof: 0 *) "*"
+prof/predef.ml:113:  | DIESE_n -> (* ocamlprof: 0 *) "diese"
+prof/predef.ml:120:  | IMINUS_n -> (* ocamlprof: 0 *) "iminus"
+prof/predef.ml:122:  | ISLASH_n -> (* ocamlprof: 0 *) "idiv"
+prof/predef.ml:123:  | ITIMES_n -> (* ocamlprof: 0 *) "itimes"
+prof/predef.ml:124:  | RUMINUS_n -> (* ocamlprof: 0 *) "ruminus"
+prof/predef.ml:125:  | RMINUS_n -> (* ocamlprof: 0 *) "rminus"
+prof/predef.ml:126:  | RPLUS_n -> (* ocamlprof: 0 *) "plus"
+prof/predef.ml:127:  | RSLASH_n -> (* ocamlprof: 0 *) "rdiv"
+prof/predef.ml:128:  | RTIMES_n -> (* ocamlprof: 0 *) "rtimes"
+prof/predef.ml:146:    | "true" -> (* ocamlprof: 0 *) TRUE_n
+prof/predef.ml:147:    | "false" -> (* ocamlprof: 0 *) FALSE_n
+prof/predef.ml:150:    | "real2int" -> (* ocamlprof: 0 *) REAL2INT_n
+prof/predef.ml:151:    | "int2real" -> (* ocamlprof: 0 *) INT2REAL_n
+prof/predef.ml:155:    | "xor" -> (* ocamlprof: 0 *) XOR_n
+prof/predef.ml:156:    | "impl" -> (* ocamlprof: 0 *) IMPL_n
+prof/predef.ml:158:    | "neq" -> (* ocamlprof: 0 *) NEQ_n
+prof/predef.ml:159:    | "lt" -> (* ocamlprof: 0 *) LT_n
+prof/predef.ml:161:    | "gt" -> (* ocamlprof: 0 *) GT_n
+prof/predef.ml:162:    | "gte" -> (* ocamlprof: 0 *) GTE_n
+prof/predef.ml:163:    | "div" -> (* ocamlprof: 0 *) DIV_n
+prof/predef.ml:164:    | "mod" -> (* ocamlprof: 0 *) MOD_n
+prof/predef.ml:168:    | "nor" -> (* ocamlprof: 0 *) NOR_n
+prof/predef.ml:169:    | "#" -> (* ocamlprof: 0 *) DIESE_n 
+prof/predef.ml:170:    | "diese" -> (* ocamlprof: 0 *) DIESE_n
+prof/predef.ml:173:    | "uminus" -> (* ocamlprof: 0 *) UMINUS_n
+prof/predef.ml:174:    | "minus" -> (* ocamlprof: 0 *) MINUS_n
+prof/predef.ml:176:    | "slash" -> (* ocamlprof: 0 *) SLASH_n
+prof/predef.ml:177:    | "times" -> (* ocamlprof: 0 *) TIMES_n
+prof/predef.ml:181:    | "iminus" -> (* ocamlprof: 0 *) IMINUS_n
+prof/predef.ml:183:    | "islash" -> (* ocamlprof: 0 *) ISLASH_n
+prof/predef.ml:184:    | "itimes" -> (* ocamlprof: 0 *) ITIMES_n
+prof/predef.ml:186:    | "ruminus" -> (* ocamlprof: 0 *) RUMINUS_n
+prof/predef.ml:187:    | "rminus" -> (* ocamlprof: 0 *) RMINUS_n
+prof/predef.ml:188:    | "rplus" -> (* ocamlprof: 0 *) RPLUS_n
+prof/predef.ml:189:    | "rslash" -> (* ocamlprof: 0 *) RSLASH_n
+prof/predef.ml:190:    | "rtimes" -> (* ocamlprof: 0 *) RTIMES_n
+prof/predefEvalConst.ml:16:    (* ocamlprof: 0 *) raise (EvalConst_error(
+prof/predefEvalConst.ml:17:             "type mismatch "^(if expect = "" then (* ocamlprof: 0 *) "" else (* ocamlprof: 0 *) (expect^" expected"))))
+prof/predefEvalConst.ml:22:    (* ocamlprof: 0 *) raise (EvalConst_error(
+prof/predefEvalConst.ml:24:               (List.length v) (if List.length v>1 then (* ocamlprof: 0 *) "s" else (* ocamlprof: 0 *) "") expect))
+prof/predefEvalConst.ml:51:  fun op -> fun ll -> (* ocamlprof: 0 *) match List.flatten ll with
+prof/predefEvalConst.ml:52:    | [Real_const_eff v0; Real_const_eff v1] -> (* ocamlprof: 0 *) [Real_const_eff (op v0 v1)]
+prof/predefEvalConst.ml:61:  fun op -> fun ll -> (* ocamlprof: 0 *) match List.flatten ll with
+prof/predefEvalConst.ml:62:    | [Int_const_eff v0] -> (* ocamlprof: 0 *) [Int_const_eff (op v0)]
+prof/predefEvalConst.ml:66:  fun op -> fun ll -> (* ocamlprof: 0 *) match List.flatten ll with
+prof/predefEvalConst.ml:67:    | [Real_const_eff v0] -> (* ocamlprof: 0 *) [Real_const_eff (op v0)]
+prof/predefEvalConst.ml:82:      (* ocamlprof: 0 *) raise (EvalConst_error(
+prof/predefEvalConst.ml:91:      (* ocamlprof: 0 *) raise (EvalConst_error(
+prof/predefEvalConst.ml:100:  fun op -> fun ll -> (* ocamlprof: 0 *) match List.flatten ll with
+prof/predefEvalConst.ml:101:    | [Real_const_eff v0] -> (* ocamlprof: 0 *) [Int_const_eff (op v0)]
+prof/predefEvalConst.ml:105:  fun op -> fun ll -> (* ocamlprof: 0 *) match List.flatten ll with
+prof/predefEvalConst.ml:106:    | [Int_const_eff v0] -> (* ocamlprof: 0 *) [Real_const_eff (op v0)]
+prof/predefEvalConst.ml:137:      | REAL2INT_n -> (* ocamlprof: 0 *) fi_evaluator int_of_float ll
+prof/predefEvalConst.ml:138:      | INT2REAL_n -> (* ocamlprof: 0 *) if_evaluator float_of_int ll
+prof/predefEvalConst.ml:144:      | NEQ_n  -> (* ocamlprof: 0 *) aab_evaluator (<>) ll 
+prof/predefEvalConst.ml:145:      | LT_n   -> (* ocamlprof: 0 *) aab_evaluator (<) ll
+prof/predefEvalConst.ml:146:      | LTE_n  -> (* ocamlprof: 0 *) aab_evaluator (<=) ll
+prof/predefEvalConst.ml:148:      | GTE_n  -> (* ocamlprof: 0 *) aab_evaluator (>=) ll
+prof/predefEvalConst.ml:157:      | IUMINUS_n  -> (* ocamlprof: 0 *) ii_evaluator (fun x -> (* ocamlprof: 0 *) -x) ll
+prof/predefEvalConst.ml:158:      | IMINUS_n -> (* ocamlprof: 0 *) iii_evaluator (-) ll
+prof/predefEvalConst.ml:159:      | IPLUS_n  -> (* ocamlprof: 0 *) iii_evaluator (+) ll
+prof/predefEvalConst.ml:160:      | ISLASH_n -> (* ocamlprof: 0 *) iii_evaluator (/) ll
+prof/predefEvalConst.ml:161:      | ITIMES_n -> (* ocamlprof: 0 *) iii_evaluator ( * ) ll
+prof/predefEvalConst.ml:162:      | RUMINUS_n -> (* ocamlprof: 0 *) ff_evaluator (fun x -> (* ocamlprof: 0 *) -.x) ll
+prof/predefEvalConst.ml:163:      | RMINUS_n -> (* ocamlprof: 0 *) fff_evaluator (-.) ll
+prof/predefEvalConst.ml:164:      | RPLUS_n  -> (* ocamlprof: 0 *) fff_evaluator (+.) ll
+prof/predefEvalConst.ml:165:      | RSLASH_n -> (* ocamlprof: 0 *) fff_evaluator (/.) ll
+prof/predefEvalConst.ml:166:      | RTIMES_n -> (* ocamlprof: 0 *) fff_evaluator ( *.) ll
+prof/predefEvalConst.ml:167:      | NOR_n   -> (* ocamlprof: 0 *) boolred_evaluator 0 ll
+prof/predefEvalConst.ml:173:      | BoolRed -> (* ocamlprof: 0 *) boolred_evaluator 1 ll
+prof/predefEvalType.ml:19:    (* ocamlprof: 0 *) let str_l = List.map LicDump.string_of_type_eff tel in
+prof/predefEvalType.ml:23:                  (if expect = "" then (* ocamlprof: 0 *) "" 
+prof/predefEvalType.ml:24:                   else (* ocamlprof: 0 *) (" whereas\n*** type '" ^expect^"' was expected")))))
+prof/predefEvalType.ml:30:                (if expect = "" then (* ocamlprof: 0 *) "" 
+prof/predefEvalType.ml:32:                (if msg = "" then (* ocamlprof: 0 *) "" else (* ocamlprof: 1 *) ("\n*** " ^ msg)))))
+prof/predefEvalType.ml:36:    (* ocamlprof: 0 *) raise (EvalType_error(
+prof/predefEvalType.ml:38:             (List.length v) (if List.length v>1 then (* ocamlprof: 0 *) "s" else (* ocamlprof: 0 *) "") expect))
+prof/predefEvalType.ml:125:        (* ocamlprof: 0 *) match UnifyType.f [t1] [t2] with
+prof/predefEvalType.ml:126:          | Equal  -> (* ocamlprof: 0 *) (lti,lto)
+prof/predefEvalType.ml:128:              (* ocamlprof: 0 *) (List.map (fun (id,tid) -> (* ocamlprof: 0 *) id, subst_type t tid) lti,
+prof/predefEvalType.ml:129:               List.map (fun (id,tid) -> (* ocamlprof: 0 *) id, subst_type t tid) lto)
+prof/predefEvalType.ml:130:          | Ko(msg) -> (* ocamlprof: 0 *) raise (Compile_error(lxm, msg))
+prof/predefEvalType.ml:169:          | _ -> (* ocamlprof: 0 *) raise (Compile_error(lxm, "\n*** type error: 3 int were expected"))
+prof/predefEvalType.ml:187:        | REAL2INT_n       -> (* ocamlprof: 0 *) ri_profile
+prof/predefEvalType.ml:188:        | INT2REAL_n       -> (* ocamlprof: 0 *) ir_profile
+prof/predefEvalType.ml:192:        | RUMINUS_n        -> (* ocamlprof: 0 *) rr_profile
+prof/predefEvalType.ml:196:        | RMINUS_n | RPLUS_n | RTIMES_n | RSLASH_n                 -> (* ocamlprof: 0 *) rrr_profile
+prof/predefEvalType.ml:258:                    (* ocamlprof: 0 *) (type_error (List.flatten [[Bool_type_eff]; t; e]) "bool*any*any")
+prof/predefEvalType.ml:259:              | x -> (* ocamlprof: 0 *) (arity_error x "3")
+prof/predefEvalType.ml:266:                (* ocamlprof: 93 *) acc | _ -> (* ocamlprof: 0 *) (type_error [ceff] "bool")
+prof/predefEvalType.ml:277:                (* ocamlprof: 0 *) arity_error [l] (string_of_int (List.length lti))
+prof/predefEvalType.ml:282:                      (* ocamlprof: 0 *) type_error2 
+prof/predefEvalType.ml:287:                      (* ocamlprof: 0 *) type_error2 
+prof/solveIdent.ml:77:	| Some op -> (* ocamlprof: 0 *) Predef_n (op,[])
+prof/solveIdent.ml:111:  | EnumConst(id,te) -> (* ocamlprof: 0 *) EnumConst(id,te)
+prof/solveIdent.ml:119:  | ArrayType(id,te,ve) -> (* ocamlprof: 0 *) ArrayType(id,te, r_val_exp ve)
+prof/split.ml:37:  | CallByPosEff({ it = Eff.FBY }, _) -> (* ocamlprof: 0 *) true
+prof/split.ml:39:  | CallByPosEff({ it = Eff.CURRENT }, _) -> (* ocamlprof: 0 *) true
+prof/symbolTab.ml:36:    (* ocamlprof: 0 *) raise (Compile_error(lxm, "unknown type (" ^ (Ident.to_string id)^")"))
+prof/symbolTab.ml:41:    (* ocamlprof: 0 *) raise (Compile_error(lxm, "unknown type (" ^ (Ident.to_string id)^")"))
+prof/symbolTab.ml:61:      (* ocamlprof: 0 *) raise (Global_error("Can not find node " ^ (Ident.to_string id)^
+prof/syntaxTab.ml:97:      (* ocamlprof: 0 *) print_string ("*** Can not find package '" ^ 
+prof/syntaxTab.ml:100:	(fun pn pm -> (* ocamlprof: 0 *) print_string ("\n***\t - '"^(Ident.pack_name_to_string pn)^ "'"))
+prof/syntaxTab.ml:111:    with Not_found -> (* ocamlprof: 0 *) raise(Compile_error(lxm, ""))
+prof/syntaxTab.ml:313:	with Not_found -> (* ocamlprof: 0 *) raise(Compile_error(lxm, "unknown package"))
+prof/syntaxTab.ml:378:  (* ocamlprof: 0 *) print_string "*** not implemented.\n";
+prof/syntaxTab.ml:382:  (* ocamlprof: 0 *) print_string "*** not implemented.\n";
+prof/syntaxTab.ml:386:  (* ocamlprof: 0 *) print_string "*** not implemented.\n";
+prof/syntaxTab.ml:394:    (* ocamlprof: 0 *) let p = Verbose.print_string ~level:3 in
+prof/syntaxTab.ml:400:	(fun pm -> (* ocamlprof: 0 *) p (SyntaxTree.pack_or_model_to_string pm); p "\n\t\t") 
+prof/syntaxTab.ml:406:	(fun id _mi -> (* ocamlprof: 0 *) p ((Ident.to_string id) ^ " "))
+prof/syntaxTab.ml:412:	(fun pn pi -> (* ocamlprof: 0 *) p ((Ident.pack_name_to_string pn) ^ " ")) 
+prof/syntaxTab.ml:418:	(fun pn pm -> (* ocamlprof: 0 *) p ((Ident.pack_name_to_string pn) ^ " ")) 
+prof/syntaxTree.ml:124:  | LeftVar sflg -> (* ocamlprof: 0 *) sflg.src
+prof/syntaxTree.ml:125:  | LeftField (x, _) -> (* ocamlprof: 0 *) lexeme_of_left_part x 
+prof/syntaxTree.ml:126:  | LeftArray (x, _) -> (* ocamlprof: 0 *) lexeme_of_left_part x
+prof/syntaxTree.ml:127:  | LeftSlice (x, _) -> (* ocamlprof: 0 *) lexeme_of_left_part x
+prof/syntaxTree.ml:133:    | NSPack  pi -> (* ocamlprof: 0 *) Ident.pack_name_to_string pi.it.pa_name ^ " (pack) "
+prof/syntaxTree.ml:134:    | NSModel mi -> (* ocamlprof: 0 *) Ident.pack_name_to_string mi.it.mo_name ^ " (model) "
+prof/unifyClock.ml:27:    (* ocamlprof: 1749 *) if List.mem_assoc i s then (* ocamlprof: 0 *) s else (* ocamlprof: 1749 *) (i,c)::s
+prof/unifyType.ml:47:	      (* ocamlprof: 1165 *) if l1 <> l2 then (* ocamlprof: 0 *) Ko "\n*** incompatible structure" else
+prof/unifyType.ml:107:  | Ko(msg) -> (* ocamlprof: 0 *) msg
+prof/unifyType.ml:108:  | Equal -> (* ocamlprof: 0 *) "types are equals\n"
+prof/unifyType.ml:109:  | Unif t -> (* ocamlprof: 0 *) "types are unifiable via " ^ (teff2str t) ^ "\n"
+prof/uniqueOutput.ml:64:    (* ocamlprof: 0 *) let rec aux vds v acc = (* ocamlprof: 0 *) match vds with
+prof/uniqueOutput.ml:65:      | VDS_def -> (* ocamlprof: 0 *) acc
+prof/uniqueOutput.ml:66:      | VDS_undef -> (* ocamlprof: 0 *) v::acc
+prof/uniqueOutput.ml:68:	  (* ocamlprof: 0 *) List.fold_left (fun acc (id,vds) -> (* ocamlprof: 0 *) aux vds (v^"."^(id2str id)) acc) acc fl
+prof/uniqueOutput.ml:69:      | VDS_array(a) -> (* ocamlprof: 0 *) fst
+prof/uniqueOutput.ml:71:	     (fun (acc,i) vds -> (* ocamlprof: 0 *) aux vds (v^"["^(int2str i) ^"]") acc, i+1) (acc,0) a)
+prof/uniqueOutput.ml:83:	  (* ocamlprof: 0 *) let msg = "\n*** Variable " ^ v ^ " is defined twice." in 
+prof/uniqueOutput.ml:186:		(* ocamlprof: 0 *) let msg = "\n*** Undefined variable(s): " ^ 
+prof/uniqueOutput.ml:201:		     (* ocamlprof: 0 *) let msg = "\n*** Error; " ^(id2str v.var_name_eff) ^ 
+prof/uniqueOutput.ml:211:		     (* ocamlprof: 0 *) let msg = "\n*** Undefined variable: " ^ (id2str v.var_name_eff)
+prof/verbose.ml:34:  (fun t -> (* ocamlprof: 2837 *) if (!_level >= level) then (* ocamlprof: 0 *) (print_string t; flush stdout) else (* ocamlprof: 2837 *) ()) s
diff --git a/src/untested_line_counter b/src/untested_line_counter
index 0d9e56e7..c3c7f2c5 100644
--- a/src/untested_line_counter
+++ b/src/untested_line_counter
@@ -1 +1 @@
-  402  4118 32317 dead.grep
+402 / 1584 = 25.37 %
-- 
GitLab