register allocation