Project

General

Profile

Revision 6a1a01d2 src/scheduling.ml

View differences:

src/scheduling.ml
116 116
    !sorted
117 117
  end
118 118

  
119
(* Filters out normalization variables and renames instance variables to keep things readable,
120
   in a case of a dependency error *)
121
let filter_original n vl =
122
 List.fold_right (fun v res ->
123
   if ExprDep.is_instance_var v then Format.sprintf "node %s" (ExprDep.undo_instance_var v) :: res else
124
   let vdecl = get_node_var v n in
125
   if vdecl.var_orig then v :: res else res) vl []
126

  
119 127
let schedule_node n =
128
  let node_vars = get_node_vars n in
120 129
  try
121 130
    let eq_equiv = ExprDep.node_eq_equiv n in
122 131
    let eq_equiv v1 v2 =
......
143 152
    let sort = topological_sort eq_equiv g in
144 153
    let unused = Liveness.compute_unused_variables n gg in
145 154
    let fanin = Liveness.compute_fanin n gg in
146

  
147
    let disjoint = Disjunction.clock_disjoint_map (get_node_vars n) in
155
 
156
    let disjoint = Disjunction.clock_disjoint_map node_vars in
148 157
    
149 158
    Log.report ~level:2 
150 159
      (fun fmt -> 
......
164 173
      );
165 174
 
166 175
    n', { schedule = sort; unused_vars = unused; fanin_table = fanin; reuse_table = reuse }
167
  with (Causality.Cycle v) as exc ->
168
    pp_error Format.err_formatter v;
176
  with (Causality.Cycle vl) as exc ->
177
    let vl = filter_original n vl in
178
    pp_error Format.err_formatter vl;
169 179
    raise exc
170 180

  
171 181
let schedule_prog prog =

Also available in: Unified diff