> On Feb 23, 2020, at 18:28, Matthew Flatt <mfl...@cs.utah.edu> wrote:
> 
> None of Racket BC, Racket CS, or Chez Scheme by itself will optimize
> away the unused loop argument. That kind of interprocedural dead-code
> elimination is out of reach for the current compilers, except to the
> degree that inlining turns them into intraprocedural questions.

Got it, thanks, that makes sense. For perspective, I am coming from GHC-land, 
where such optimizations are near-guaranteed: the demand analyzer would see the 
argument is unused and drop it after a worker/wrapper split. That said, I 
realize the luxury of purity and non-strict evaluation makes it easier for GHC 
to be much more aggressive.

> Converting loops into closed form requires more sophisticated and
> general induction reasoning than is typical in a compiler. Or it needs
> ad hoc pattern patching to cover a few cases --- which I have seen gcc
> do, but I don't think that's very common.

Yes, that makes sense, and this part is not shocking. I don’t think GHC manages 
that optimization, either.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/821102D5-8C7B-4B3E-91CB-C495E7E2A4D2%40gmail.com.

Reply via email to