altos/scheme: Work around gcc 7.2.0 optimization bug in memory manager
authorKeith Packard <keithp@keithp.com>
Mon, 18 Dec 2017 10:12:04 +0000 (02:12 -0800)
committerKeith Packard <keithp@keithp.com>
Mon, 18 Dec 2017 10:12:04 +0000 (02:12 -0800)
commit6593570418e087b9f83ed7f90303d4e1e7d20e83
tree998be6c34980656dc99008a07986f5c76a1e4bc7
parent9f1849e548e35498f88a0b8adbbc4a57c7a39222
altos/scheme: Work around gcc 7.2.0 optimization bug in memory manager

After marking a set of memory chunks, it's possible that all of them
will be packed tight against 'top', in which case none of them will be
moving. In that case, gcc 7.2.0 appears to generate incorrect code
causing the loop to be abandoned, meaning that we don't actually
collect anything at all.

Add a quick short-circuit test just after the mark phase that skips
the code which wouldn't do anything in this case.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/scheme/ao_scheme_mem.c