here are their definition

bitVect *rMask;               /* registers in use during this instruction */
  bitVect *rSurv;               /* registers that survive this instruction (i.e. they are in use, it is not their last use and they are not in the return) */
It seems both of them indicate regs are keeping values, but what is the difference? Can somebody show me an example to  distinguish?