C2 estimates of whether a compile has loops by calling has_loops() on the root of the compile but not on any inlinees. This means that inlining something with loops into something without loops might result in loop opts not being run. Sometimes it will be run anyway because we have split_ifs but it certainly should take inlinees into account.
|