*** peep2.ori
--- peep2.c
**************
*** 304,310
  	 */
  	if ((op1 == MOVE) && (op2 == MOVE) && (i2->dst.amode == REG) &&
  	    opeq(&i1->dst, &i2->src) && ((i1->dst.amode & (INC|DEC)) == 0) &&
! 	    (i1->flags == i2->flags) && (i1->dst.amode != REG)) {
  
  		freeop(&i1->dst);
  		i1->dst = i2->dst;
--- 304,311 -----
  	 */
  	if ((op1 == MOVE) && (op2 == MOVE) && (i2->dst.amode == REG) &&
  	    opeq(&i1->dst, &i2->src) && ((i1->dst.amode & (INC|DEC)) == 0) &&
! 	    (i1->flags == i2->flags) && (i1->dst.amode != REG) &&
! 	    !uses(i1, i2->dst.areg)) {
  
  		freeop(&i1->dst);
  		i1->dst = i2->dst;
**************
*** 684,691
  			    	DBG(printf("%d ", __LINE__))
  			    	return TRUE;
  			}
! 
! 			if (uses(i2, RM(dr1)))
  				goto end24;
  
  			if (i2->next == NULL)
--- 685,691 -----
  			    	DBG(printf("%d ", __LINE__))
  			    	return TRUE;
  			}
! 			if (uses(i2, dr1))
  				goto end24;
  
  			if (i2->next == NULL)
**************
*** 733,739
  			    	return TRUE;
  			}
  
! 			if (uses(i2, RM(dr1)))
  				goto end26;
  
  			if (i2->next == NULL)
--- 733,739 -----
  			    	return TRUE;
  			}
  
! 			if (uses(i2, dr1))
  				goto end26;
  
  			if (i2->next == NULL)
**************
*** 781,787
  			    	return TRUE;
  			}
  
! 			if (uses(i2, RM(dr1)))
  				goto end28;
  
  			if (i2->next == NULL)
--- 781,787 -----
  			    	return TRUE;
  			}
  
! 			if (uses(i2, dr1))
  				goto end28;
  
  			if (i2->next == NULL)
*** peep3.ori
--- peep3.c
**************
*** 296,302
  	    (i1->dst.amode == REG) && ISD(i1->dst.areg) &&
  	    (i3->src.amode == REG) && (i1->dst.areg == i3->src.areg) &&
  	    (i3->dst.amode == REG) && ISA(i3->dst.areg) &&
! 	    !sets(i3, RM(i3->src.areg))) {
  
!  		if ((i3->live & i3->src.areg) == 0) {
  			i1->dst.areg = i3->dst.areg;
--- 296,302 -----
  	    (i1->dst.amode == REG) && ISD(i1->dst.areg) &&
  	    (i3->src.amode == REG) && (i1->dst.areg == i3->src.areg) &&
  	    (i3->dst.amode == REG) && ISA(i3->dst.areg) &&
! 	    !uses(i2, i3->src.areg) && !uses(i2, i3->dst.areg)) {
  
!  		if ((i3->live & RM(i3->src.areg)) == 0) {
  			i1->dst.areg = i3->dst.areg;
**************
*** 330,336
  		    (i2->dst.areg == rm)) {
  
  			while (i3 != NULL) {
! 				if (sets(i3, RM(rm)))
  					goto end7;
  
  				if (i3->src.amode==REGI && i3->src.areg==rn) {
--- 330,336 -----
  		    (i2->dst.areg == rm)) {
  
  			while (i3 != NULL) {
! 				if (sets(i3, rm))
  					goto end7;
  
  				if (i3->src.amode==REGI && i3->src.areg==rn) {
**************
*** 397,403
  		    (i2->dst.areg == rm)) {
  
  			while (i3 != NULL) {
! 				if (sets(i3, RM(rm)))
  					goto end9;
  
  				if (i3->src.amode==REGI && i3->src.areg==rn) {
--- 397,403 -----
  		    (i2->dst.areg == rm)) {
  
  			while (i3 != NULL) {
! 				if (sets(i3, rm))
  					goto end9;
  
  				if (i3->src.amode==REGI && i3->src.areg==rn) {
**************
*** 464,470
  		    (i2->dst.areg == rm)) {
  
  			while (i3 != NULL) {
! 				if (sets(i3, RM(rm)))
  					goto end11;
  
  				if (i3->src.amode==REGI && i3->src.areg==rn) {
--- 464,470 -----
  		    (i2->dst.areg == rm)) {
  
  			while (i3 != NULL) {
! 				if (sets(i3, rm))
  					goto end11;
  
  				if (i3->src.amode==REGI && i3->src.areg==rn) {
