let eliminate_temps f =
ignore(visitCilFunction (new removeBrackets) 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
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
visitCilFunction (new unusedRemoverClass) f'