revise codegen.c