diff --git a/src/kernel_internals/typing/rmtmps.ml b/src/kernel_internals/typing/rmtmps.ml
index 0bef4ca0188388bd11ccd2315ad6a9c9d4bfb3f3..83a59cde83fddd66975eea7b3d8834ccea9ae4b9 100644
--- a/src/kernel_internals/typing/rmtmps.ml
+++ b/src/kernel_internals/typing/rmtmps.ml
@@ -581,7 +581,7 @@ let global_type_and_name = function
   | GText _ -> "<text>"
   | GAnnot _ -> "<annot>"
 
-class markReferencedVisitor = object
+class markReferencedVisitor = object (self)
   inherit nopCilVisitor
 
   val dkey = Kernel.dkey_referenced
@@ -589,6 +589,13 @@ class markReferencedVisitor = object
   val inside_exp : exp Stack.t = Stack.create ()
   val inside_typ : typ Stack.t = Stack.create ()
 
+  method private reference varinfo loc =
+    if not (hasAttribute "FC_BUILTIN" varinfo.vattr) then begin
+      Kernel.debug ~dkey "referenced: var/fun %s@." varinfo.vname;
+      Kernel.debug ~source:(fst loc) ~dkey "referenced: fun %s" varinfo.vname;
+      varinfo.vreferenced <- true;
+    end
+
   method! vglob = function
     | GType (typeinfo, loc) ->
       Kernel.debug ~source:(fst loc) ~dkey "referenced: type %s" typeinfo.tname;
@@ -604,19 +611,14 @@ class markReferencedVisitor = object
       Kernel.debug ~source:(fst loc) ~dkey "referenced: enum %s" enuminfo.ename;
       enuminfo.ereferenced <- true;
       DoChildren
-    | GVar (varinfo, _, loc)
-    | GVarDecl (varinfo, loc)
-    | GFunDecl (_,varinfo, loc)
-    | GFun ({svar = varinfo}, loc) ->
-      if not (hasAttribute "FC_BUILTIN" varinfo.vattr) then begin
-        Kernel.debug ~dkey "referenced: var/fun %s@." varinfo.vname;
-        Kernel.debug ~source:(fst loc) ~dkey "referenced: fun %s" varinfo.vname;
-        varinfo.vreferenced <- true;
-      end;
+    | GVar (varinfo, _, loc) | GFun ({svar = varinfo}, loc) ->
+      self#reference varinfo loc;
       DoChildren
-    | GAnnot _ -> DoChildren
-    | _ ->
+    | GVarDecl (varinfo, loc)
+    | GFunDecl (_,varinfo, loc) ->
+      self#reference varinfo loc;
       SkipChildren
+    | _ -> SkipChildren
 
   method! vtype = function
     | TNamed (ti, _) ->
@@ -661,6 +663,8 @@ class markReferencedVisitor = object
     end;
     SkipChildren
 
+  method! vspec _ = SkipChildren
+  method! vcode_annot _ = SkipChildren
 end
 
 let markReferenced ast =