caching compiler macro