codegen: unify if and when using codegen_if