You can subscribe to this list here.
2005 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}
(3) 
_{Jun}
(8) 
_{Jul}
(15) 
_{Aug}
(29) 
_{Sep}
(11) 
_{Oct}
(3) 
_{Nov}
(6) 
_{Dec}
(22) 

2006 
_{Jan}
(36) 
_{Feb}
(31) 
_{Mar}
(17) 
_{Apr}
(9) 
_{May}
(26) 
_{Jun}
(19) 
_{Jul}
(13) 
_{Aug}
(18) 
_{Sep}
(11) 
_{Oct}
(14) 
_{Nov}
(22) 
_{Dec}
(4) 
2007 
_{Jan}
(10) 
_{Feb}
(26) 
_{Mar}
(14) 
_{Apr}
(11) 
_{May}
(2) 
_{Jun}
(22) 
_{Jul}
(2) 
_{Aug}
(5) 
_{Sep}
(3) 
_{Oct}
(5) 
_{Nov}
(15) 
_{Dec}
(14) 
2008 
_{Jan}
(12) 
_{Feb}
(5) 
_{Mar}
(8) 
_{Apr}
(14) 
_{May}
(12) 
_{Jun}
(13) 
_{Jul}
(9) 
_{Aug}
(3) 
_{Sep}
(12) 
_{Oct}
(3) 
_{Nov}
(16) 
_{Dec}
(26) 
2009 
_{Jan}
(12) 
_{Feb}
(17) 
_{Mar}
(21) 
_{Apr}
(38) 
_{May}
(50) 
_{Jun}
(39) 
_{Jul}
(37) 
_{Aug}
(20) 
_{Sep}
(22) 
_{Oct}
(16) 
_{Nov}
(16) 
_{Dec}
(26) 
2010 
_{Jan}
(18) 
_{Feb}
(4) 
_{Mar}
(13) 
_{Apr}
(30) 
_{May}
(9) 
_{Jun}
(16) 
_{Jul}
(11) 
_{Aug}
(7) 
_{Sep}
(10) 
_{Oct}
(11) 
_{Nov}
(2) 
_{Dec}
(5) 
2011 
_{Jan}
(49) 
_{Feb}
(32) 
_{Mar}
(16) 
_{Apr}
(13) 
_{May}
(19) 
_{Jun}
(9) 
_{Jul}
(7) 
_{Aug}
(4) 
_{Sep}
(25) 
_{Oct}
(14) 
_{Nov}
(17) 
_{Dec}
(5) 
2012 
_{Jan}

_{Feb}
(7) 
_{Mar}

_{Apr}
(23) 
_{May}
(31) 
_{Jun}
(16) 
_{Jul}
(26) 
_{Aug}
(3) 
_{Sep}
(12) 
_{Oct}
(5) 
_{Nov}
(7) 
_{Dec}
(8) 
2013 
_{Jan}
(15) 
_{Feb}
(23) 
_{Mar}
(41) 
_{Apr}
(5) 
_{May}
(10) 
_{Jun}
(8) 
_{Jul}
(15) 
_{Aug}
(34) 
_{Sep}
(29) 
_{Oct}
(27) 
_{Nov}
(11) 
_{Dec}
(8) 
2014 
_{Jan}
(8) 
_{Feb}
(4) 
_{Mar}
(1) 
_{Apr}

_{May}

_{Jun}
(3) 
_{Jul}
(5) 
_{Aug}
(16) 
_{Sep}
(7) 
_{Oct}

_{Nov}
(5) 
_{Dec}
(6) 
2015 
_{Jan}
(1) 
_{Feb}
(7) 
_{Mar}

_{Apr}
(3) 
_{May}

_{Jun}
(1) 
_{Jul}
(4) 
_{Aug}
(2) 
_{Sep}
(7) 
_{Oct}
(6) 
_{Nov}
(4) 
_{Dec}
(1) 
2016 
_{Jan}

_{Feb}

_{Mar}
(2) 
_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

S  M  T  W  T  F  S 




1

2
(1) 
3
(2) 
4
(3) 
5

6
(3) 
7

8

9

10

11

12

13

14

15

16

17
(1) 
18

19

20
(1) 
21
(3) 
22

23

24

25

26

27

28
(2) 
29
(1) 
30

31


From: Nathan Cooprider <coop@cs...>  20060304 21:17:37

Matt Harren wrote: > Nathan Cooprider wrote: > >> (** Comparing expressions without a Out_of_memory error >> **********************) > > You'll get outofmemory errors when using = on Cil.exps because some > CIL data structures are cyclic. But you can use (compare e1 e2), > because compare will always terminate on CIL expressions. You only > need a custom equality checker if you want to consider different > expressions to be equivalent, e.g. ints and unsigned ints. > >  Matt I just tried this and you are correct. I am not sure why I did not try this before. I had just been using '=' exclusively and did not try compare before writing my own. Oh well. Thanks. 
From: Matt Harren <matth@cs...>  20060304 19:31:15

Nathan Cooprider wrote: > (** Comparing expressions without a Out_of_memory error > **********************) You'll get outofmemory errors when using = on Cil.exps because some CIL data structures are cyclic. But you can use (compare e1 e2), because compare will always terminate on CIL expressions. You only need a custom equality checker if you want to consider different expressions to be equivalent, e.g. ints and unsigned ints.  Matt 
From: Nathan Cooprider <coop@cs...>  20060304 16:46:48

I wrote my own. This is something I have thought would be useful for a while, but kept putting off for various reasons. The code is below (CIL maintainers: I put it at the end of the ciltools.ml file). Nathan Nathan Cooprider wrote: > Does there exist or has someone written an effective way of comparing > expressions? If not then I will be writing my own, but there is no > sense in reinventing the wheel. . . (** Comparing expressions without a Out_of_memory error **********************) let rec compare_exp x y = match x,y with Const(CEnum(e1,s1,ei1)),Const(CEnum(e2,s2,ei2)) > let s_comp = compare s1 s2 in if (s_comp <> 0) then s_comp else let e_comp = compare_exp e1 e2 in if (e_comp <> 0) then e_comp else compare ei1.ename ei2.ename  Lval(lv1), Lval(lv2)  AddrOf(lv1),AddrOf(lv2)  StartOf(lv1),StartOf(lv2) > compare_lval lv1 lv2  SizeOf(t1),SizeOf(t2)  AlignOf(t1),AlignOf(t2) > compare_type t1 t2  AlignOfE(e1), AlignOfE(e2) > compare_exp e1 e2  UnOp(o1,e1,t1),UnOp(o2,e2,t2) > let o_comp = compare o1 o2 in if (o_comp <> 0) then o_comp else let e_comp = compare_exp e1 e2 in if( e_comp <> 0) then e_comp else compare_type t1 t2  BinOp(o1,l1,r1,t1),BinOp(o2,l2,r2,t2) > let o_comp = compare o1 o2 in if (o_comp <> 0) then o_comp else let l_comp = compare_exp l1 l2 in if( l_comp <> 0) then l_comp else let r_comp = compare_exp r1 r2 in if ( r_comp<> 0) then r_comp else compare_type t1 t2  CastE(t1,e1),CastE(t2,e2) > let t_comp = compare_type t1 t2 in if (t_comp <> 0) then t_comp else compare_exp e1 e2  _, _ > compare x y and compare_lval x y = match x,y with (Var v1, o1), (Var v2, o2) > let v_comp = compare_var v1 v2 in if (v_comp <> 0) then v_comp else compare_offset o1 o2  (Mem p1, o1), (Mem p2, o2) > let e_comp = compare_exp p1 p2 in if (e_comp <> 0) then e_comp else compare_offset o1 o2  _, _ > compare x y and compare_type x y = compare (typeSig x) (typeSig y) and compare_var x y = compare x.vid y.vid and compare_offset x y = match x, y with Field(fi1,o1),Field(fi2,o2)> let f_comp = compare fi1.fname fi2.fname in if (f_comp <> 0) then f_comp else let c_comp = compare fi1.fcomp.ckey fi2.fcomp.ckey in if (c_comp <> 0) then c_comp else compare_offset o1 o2  Index(e1,o1),Index(e2,o2) > let e_comp = compare_exp e1 e2 in if (e_comp <> 0) then e_comp else compare_offset o1 o2  _, _ > compare x y 