this is carried out in conjunction with register allocation to prevent spillages