They are not exempt from the caches being cleared; marking something as decompiled simply changes the color of the function in the func_t
, and does not affect the caches in any way. However, this is not a big deal. The "caches" referred to by that menu item simply mean the saved cfunc_t
and mba_t
data structures for that function, which Hex-Rays uses to accelerate subsequent decompilations of functions you've already looked at. You won't lose any annotations (names, comments, types, having marked a function as decompiled, etc.) by clearing the caches. I clear the caches multiple times a day on databases that are important to me; don't worry about losing your work. If you're really paranoid, save your database or create a snapshot first before giving it a try; you'll see that you don't lose any of your work.
The only negative effect is the slowdown on re-decompiling unrelated functions that you otherwise have no interest in clearing the cache entries for. If you don't like that slowdown, an IDAPython one-liner ida_hexrays.mark_cfunc_dirty(funcEa)
will clear the cfunc_t
cache entry for the function at address funcEa
(though I'm not sure if it will also purge the mba_t
cache entry, which is likely necessary to trigger the changes stemming from the disassembly listing).