compound assigns are desugared during lowering so the c output only ever has plain assignments. <<< main = fun () { var x int = 0 x += 1 x *= 2 x++ x -= 3 x-- } >>> #include "core.c" void catskill_main(void); void catskill_main(void) { integer x = 0; x = x + 1; x = x * 2; x = x + 1; x = x - 3; x = x - 1; } #include "runtime.c"