<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><font face="Menlo" style="font-size: 11px;" class=""><div class=""></div><div class=""><br class=""></div><div class=""><span style="font-family: Helvetica; font-size: 12px;" class=""><b class="">Methodology</b></span></div><div class=""><span style="font-family: Helvetica; font-size: 12px;" class="">My tool took the compile_commands.json from LLVM build and  iterated over files trying to remove redundant headers. To find which header files could be removed it scanned the file for "#include" lines and tried to remove them one by one (checking if the file still compiles after the removal). When there were no more include lines to remove, we verified the change with ninja+ninja check. After it we compared preprocessed file size before and after the change hoping to see that it dropped and then checked the compile time impact.</span></div><div class=""><span style="font-family: Helvetica; font-size: 12px;" class="">NB: As a side effect of this approach we removed all include-lines from inactive "ifdef" sections, which means that the patches <b class="">*will*</b> break other configurations if applied as-is.</span></div><div class=""><span style="font-family: Helvetica; font-size: 12px;" class=""><br class=""></span></div><div class=""><span style="font-family: Helvetica; font-size: 12px;" class="">Thanks,</span></div><div class=""><span style="font-family: Helvetica; font-size: 12px;" class="">Michael</span></div></font></div></body></html>