<div dir="ltr"><div><div><div>Hi everyone,<br></div>I have felt for quite some time that during my regular LLVM workflow, CMake recompiles a lot of files after I update to the latest ToT (which I do more than once per week). Of course, this wasn't really based on any real data, just felt like every time I update (even if it's a day or two later), we end up recompiling everything. For a while I assumed that patches touch a few headers that are used all over the place or something like that, but this was happening with what seems like unexpected frequency.<br><br></div>So what I've done is do a few update/rebuild cycles for revisions that are 200 apart, then 100, then 50, then 25. And it seems that quite commonly, we recompile more than 50% of the source with just a few landed revisions. I've included the numbers below (and I do realize that this is a fairly small sample).<br><br></div><div>If this seems reasonable to most of the community, so be it - I work on a large server that chews through this stuff pretty quickly so I can certainly live with it. On the other hand, if this seems way higher than what you expect, it could very well be that something is wrong in my setup and I'd appreciate some pointers about how to go about investigating this. Finally, if others are seeing this and we as a community do feel that something can/should be done about this (although I don't know what that might be), perhaps we can start that discussion.<br><br></div><div>Setup: CMake with -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -G Ninja<br></div><div><br>The numbers here are the total numbers of targets ninja reports as having rebuilt. Ninja is invoked only `-j <N>` for parameters (i.e. not check-all or any specific targets).<br><br><span style="font-family:monospace,monospace">RevFrm, RevTo,  NumNinjaObjsRebuilt<br>300000, 300200, 2957<br>300200, 300400, 2692<br>300400, 300600, 3001<br>300600, 300800, 2877<br>300800, 301000, 3003<br>301000, 301200, 2750<br>301200, 301400, 2579<br>301400, 301600, 2709<br>301600, 301700, 2325<br>301700, 301800, 2357<br>301800, 301900, 2667<br>301900, 302000, 2466<br>302000, 302100, 2499<br>302100, 302200, 2063<br>302200, 302250, 2884<br>302250, 302300, 2007<br>302300, 302350, 2209<br>302350, 302400, 737<br>302400, 302450, 2398<br>302450, 302500, 2856<br>302500, 302550, 2090<br>302550, 302600, 2866<br>302600, 302625, 1786<br>302625, 302650, 1966<br>302650, 302675, 1583<br>302675, 302700, 307<br>302700, 302725, 2246</span><br></div></div>