let need_cast t1 t2 =
  match (unrollType t1, unrollType t2) with
    | (TInt _| TEnum _| TPtr _),(TInt _| TEnum _| TPtr _)
    | (TFloat _,TFloat _)
    | (TComp _, TComp _) ->
        (try bitsSizeOf t1 <> bitsSizeOf t2
         with SizeOfError _ -> true)
    | _ -> true