Compiler manuals usually state -O3 and higher do not preserve language semantics. It's going to be hard to prove "bug" in the non-default presence of a switch known to potentially produce undefined behavior.
I'd stick to defined behavior and -O2. Moreover, if as noted -O3 seems to result in no benefit... -O2 is a pure win.
On 12/20/16 17:03 , commits@squeakvm.org wrote:
This appears to be an actual compiler bug, although it goes away when print statements are added, so I cannot say for sure (and it is difficult to attach gdb to the newly spawned child process before it crashes). The bad behavior happens only with -O3 and there are no real performance benefits compared to -O2 (bytecodes faster, sends slower).