  The static analysis of cache accesses consists in correctly predicting which
accesses are hits or misses. While there exist good exact and approximate
analyses for caches implementing the least recently used (LRU) replacement
policy, such analyses were harder to find for other replacement policies. A
theoretical explanation was found: for an appropriate setting of analysis over
control-flow graphs, cache analysis is PSPACE-complete for all common
replacement policies (FIFO, PLRU, NMRU) except for LRU, for which it is only
NP-complete. In this paper, we show that if procedure calls are added to the
control flow, then the gap widens: analysis remains NP-complete for LRU, but
becomes EXPTIME-complete for the three other policies. For this, we improve on
earlier results on the complexity of reachability problems on Boolean programs
with procedure calls. In addition, for the LRU policy we derive a backtracking
algorithm as well as an approach for using it as a last resort after other
analyses have failed to conclude.
