I am not completely sold on this, but for example LLVM has a lot of 1 character variables where 'I' is always the instruction you're working on, 'F' is always the function you're compiling, 'B' is the current basic block you're processing, etc.
Having worked on several compilers over the year, it's certainly not much worse than other practices I have seen like using 't1' and 't2' to refer to the two instruction temporaries you just created, or 'insn' for the instruction you're currently examining.