Project

General

Profile

« Previous | Next » 

Revision 8ac7a0c7

Added by Xavier Thirioux over 9 years ago

- missing case in clock disjunction predicate, the absence of which produced
weak (but still correct) optimization results.

View differences:

src/clocks.ml
354 354
 | Carry_const id1, Carry_const id2 -> id1 = id2
355 355
 | _                                -> cr1.carrier_id = cr2.carrier_id
356 356

  
357
let eq_clock ck1 ck2 =
358
 (repr ck1).cid = (repr ck2).cid
359

  
357 360
(* Returns the clock root of a clock *)
358 361
let rec root ck =
359
  match (repr ck).cdesc with
362
  let ck = repr ck in
363
  match ck.cdesc with
360 364
  | Ctuple (ck'::_)
361 365
  | Con (ck',_,_) | Clink ck' | Ccarrying (_,ck') -> root ck'
362 366
  | Pck_up _ | Pck_down _ | Pck_phase _ | Pck_const _ | Cvar _ | Cunivar _ -> ck
......
369 373
    | Ccarrying (_, ck) -> branch ck acc
370 374
    | Con (ck, cr, l)   -> branch ck ((cr, l) :: acc)
371 375
    | Ctuple (ck::_)    -> branch ck acc
376
    | Ctuple _
372 377
    | Carrow _          -> assert false
373 378
    | _                 -> acc
374 379
  in branch ck [];;
......
382 387

  
383 388
(* Disjunction relation between variables based upon their static clocks. *)
384 389
let disjoint ck1 ck2 =
385
 root ck1 = root ck2 && disjoint_branches (branch ck1) (branch ck2);;
390
  eq_clock (root ck1) (root ck2) && disjoint_branches (branch ck1) (branch ck2)
386 391

  
387 392
(** [normalize pck] returns the normal form of clock [pck]. *)
388 393
let normalize pck =

Also available in: Unified diff