diff --git a/collects/typed-racket/optimizer/tool/mzc.rkt b/collects/typed-racket/optimizer/tool/mzc.rkt index ff3b8c08d8..64002e064a 100644 --- a/collects/typed-racket/optimizer/tool/mzc.rkt +++ b/collects/typed-racket/optimizer/tool/mzc.rkt @@ -146,6 +146,7 @@ (define (post-process-inline-log log) (define-values (inliner-logs tr-logs) (partition inliner-log-entry? log)) + (define any-self-o-o-f? (ormap self-out-of-fuel? inliner-logs)) (define grouped-events (group-by equal? #:key log-entry-pos ; right file, so that's enough inliner-logs)) @@ -175,7 +176,7 @@ ;; body (as opposed to `g') may make unboxing possible. ;; Of course, we lose precision if `g' has multiple call sites to `f'. (define n-unrollings (length (filter unrolling? group))) - (define is-a-loop? (> n-unrollings 0)) + (define is-a-loop? (or any-self-o-o-f? (> n-unrollings 0))) (define inlining-sites (group-by equal? #:key (lambda (x) (inlining-event-where-loc