<div dir="ltr">Hi everyone,<br><br>Lately I've been thinking of the optimization model of almost any optimizer ever.<br>The optimizer should finish "at a reasonable time". For example,<br>for a 20k lines program, the optimizer should finish in a couple of minutes and not<br>e.g. a couple of days.<br><br>And my question is, why? For almost all programs, the period that starts when the program<br>starts being developed to the day it is released is way bigger than a couple of minutes.<br>In the meantime, a couple of modules might not have been touched for months.<br>And an unconstrained optimizer could do its best in all this time.<br><br>Given that this eternal optimizer will respect the initial semantics, one can compile<br>a module, test it, and then let the optimizer do its best. The behavior of a module should<br>only be faster, no need to re-test.<br><div><br></div><div>In the meantime of course, we need to test the program as a whole and other modules<br>might actually change. For that we can already what happens today which is run<br>"reasonably optimized" builds.<br><br>This is a humble opinion and I'm looking forward to hear the opinion of the LLVM community.<br><br>Best,<br>Stefanos<br></div></div>