let compare a b =
  match a,b with
  | C_int i, C_int i' -> compare_c_int i i'
  | C_float f , C_float f' -> compare_c_float f f'
  | C_pointer te , C_pointer te' -> Typ.compare te te'
  | C_comp c , C_comp c' -> Compinfo.compare c c'
  | C_array a , C_array a' -> AinfoComparable.compare a a'
  | _ ->
    let k1 = basetype a in
    let k2 = basetype b in
    assert (k1<>k2) ;
    k1 - k2