temporarly out of time on this one. it appears from the assembly output that 8c multiplies by 0 and not 1 when computing z a second time. nonetheless, i haven't yet seen the problem.
#include <u.h> #include <libc.h> void main(void) { int three, one; uvlong twelve, z; one = 1; three = 3; twelve = 12; z = one*(twelve - three); print("z = %llud\n", z); z = (twelve - three) * one; print("z = %llud\n", z); exits(0); } output: z = 9 z = 0 - erik