- *(short *)(regs[i]) = 0; /* if register destination, that reg is a goner */
- if (DOUBLE==(type&0xF) || DOUBLE==((type>>4)&0xF))
- *(short *)(regs[i+1]) = 0; /* clobber two at once */
+ /* if register destination, that reg is a goner */
+ regs[i][0] = regs[i][1] = 0;
+ switch(type & 0xF){
+ case DFLOAT: /* clobber two at once */
+ /*FALLTHROUGH*/
+ case GFLOAT:
+ regs[i+1][0] = regs[i+1][1] = 0;
+ break;
+ case HFLOAT: /* clobber four at once */
+ regs[i+1][0] = regs[i+1][1] = 0;
+ regs[i+2][0] = regs[i+2][1] = 0;
+ regs[i+3][0] = regs[i+3][1] = 0;
+ break;
+ }
+ switch((type>>4)&0xF){
+ case DFLOAT: /* clobber two at once */
+ /*FALLTHROUGH*/
+ case GFLOAT:
+ regs[i+1][0] = regs[i+1][1] = 0;
+ break;
+ case HFLOAT: /* clobber four at once */
+ regs[i+1][0] = regs[i+1][1] = 0;
+ regs[i+2][0] = regs[i+2][1] = 0;
+ regs[i+3][0] = regs[i+3][1] = 0;
+ break;
+ }