let iter_from_func f kf =
    let definition = Kernel_function.get_definition kf
    and visitor = object
      inherit nopCilVisitor as super
      method vstmt stmt = f stmt; super#vstmt stmt
        (* speed up *)
      method vvdec _ = SkipChildren (* via visitCilFunction *)
      method vspec _ = SkipChildren (* via visitCilFunction *)
      method vcode_annot _ = SkipChildren (* via Code_annot stmt *)
      method vloop_annot _ = SkipChildren (* via Loop stmt *)
      method vexpr _ = SkipChildren (* via stmt such as Return, IF, ... *)
      method vlval _ = SkipChildren (* via stmt such as Set, Call, Asm, ... *)
      method vattr _ = SkipChildren (* via Asm stmt *)
      method vvrbl _ = assert false
      method voffs _ = assert false
      method vinitoffs _ = assert false
      method vglob _ = assert false
      method vinit _ = assert false
      method vtype _ = assert false
      method vattrparam _ = assert false
      method vlogic_type _ = assert false
      method vterm _ = assert false
      method vterm_node _ = assert false
      method vterm_lval _ = assert false
      method vterm_lhost _ = assert false
      method vterm_offset _ = assert false
      method vlogic_info _ = assert false
      method vlogic_var _ = assert false
      method vquantifiers _ = assert false
      method vpredicate _ = assert false
      method vpredicate_named _ = assert false
      method vpredicate_info _ = assert false
      method vc_initializer _ = assert false
      method vbehavior _ = assert false
      method vtype_annot _ = assert false
      method vannotation _ = assert false
    end
    in ignore (visitCilFunction (visitor:>cilVisitor) definition)