bug#39573: [3.0.0] Compiler fails to optimize out side-effect-free expression

2020-02-13 Thread Mikael Djurfeldt
Den tors 13 feb. 2020 12:37Ludovic Courtès skrev: > Yay! It’s nice to see how 7dc90a17e03045c7cd8894b14b027b845b68aa4f is > short and clear. > > Thanks, > Ludo’. > (You're lucky, Ludo', that we don't take that statement literally. :-)) Thanks! >

bug#39573: [3.0.0] Compiler fails to optimize out side-effect-free expression

2020-02-13 Thread Ludovic Courtès
Hi Andy, Andy Wingo skribis: >> However, 3.0.0 keeps the computation of ‘i’: >> > [...] >> L3: >> 53(instrument-loop 139) >> 55(handle-interrupts) >> 56(call-scm<-scm-uimm 5 5 1 3) at (unknown >> file):388:11 >> 58

bug#39573: [3.0.0] Compiler fails to optimize out side-effect-free expression

2020-02-12 Thread Andy Wingo
On Wed 12 Feb 2020 12:50, Ludovic Courtès writes: > Hello! > > Consider this loop: > > (let loop ((n (expt 2 18)) > (i 1)) > (unless (zero? n) > (loop (- n 1) > (logior 0 (ash i 1) > > Guile 2.2 strips away the computation of ‘i’ (it cannot throw, has no

bug#39573: [3.0.0] Compiler fails to optimize out side-effect-free expression

2020-02-12 Thread Ludovic Courtès
Hello! Consider this loop: (let loop ((n (expt 2 18)) (i 1)) (unless (zero? n) (loop (- n 1) (logior 0 (ash i 1) Guile 2.2 strips away the computation of ‘i’ (it cannot throw, has no side effects, and the result is unused): --8<---cut