Description
We added very fine grained recompilation avoidance to HLS in #2316. With that change, a module using TH is recompiled if the hash of the Core of any of the modules it uses in a splice changes.
However, we still use GHC's recompilation avoidance by way of the checkOldIface
function, which handles all the other recompilation avoidance cases which don't involve Template Haskell.
GHC 9.4 also added a similar finer grained recompilation avoidance scheme, in that it will recompile a module using TH if the hash of the source of any modules it uses in a splice changes. This is weaker than what we have in HLS, and as such we may end up recompiling when we didn't need to before.
Possible solution: Filter out the UsageHomeModuleInterface
entries added to usages by GHCs recompilation checker.