let eliminateTempsForExpPrinting f =
  Cfg.clearCFGinfo f;
  ignore(Cfg.cfgFun f);
  UD.ignoreSizeof := false;
  RD.computeRDs f;
  IH.clear iioh;
  IH.clear incdecHash;
  IH.clear idDefHash;
  let etec = new expLvTmpElimClass f in
  let f' = visitCilFunction (etec :> cilVisitor) f in
  RD.clearMemos (); (* we changed instructions and invalidated the "cache" *)
  let idtec = new incdecTempElimClass f' in
  let f' = visitCilFunction (idtec :> cilVisitor) f' in
  let ctec = new callTempElimClass f' in
  let f' = visitCilFunction (ctec :> cilVisitor) f' in
  f'