let flush_globals () =
  let (before,after)=List.fold_left
    (fun (b,a) elem ->
        match elem with
          | GFun(_,_) as func -> (b,func::a)
          | _ as other -> (other::b,a)
    )
    ([],[])
    !file.globals in

  !file.globals <- (List.rev before)@(List.rev !globals_queue)@(List.rev after);
(*  !file.globals <- (List.rev !globals_queue)@(!file.globals);*)
  globals_queue:=[]