Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_FS_1_19910112 - c/dist/bug-606.dif
There are no other files named bug-606.dif in the archive.
;COMPARISON OF PS:<C.KCC.CC>CCOPT.C.324 AND PS:<C.KCC.CC>CCOPT.C.325
;OPTIONS ARE    /3

**** FILE PS:<C.KCC.CC>CCOPT.C.324, 13-55 (53882)
**** FILE PS:<C.KCC.CC>CCOPT.C.325, 13-55 (53882)
	Note that if the global "stackrefs" is set, there is at least one
automatic variable address somewhere in the function, which prevents us from
ever flushing a positive ADJSP.  At least not without even hairier checking
to ensure that no such address is generated within the range of instructions
between the ADJSP and the label.  For the time being, we try to do this
hairy checking, assuming that only three kinds of instructions can possibly
generate such addresses: XMOVEI, MOVE [bp], and ADJBP [bp].
***************

**** FILE PS:<C.KCC.CC>CCOPT.C.324, 13-67 (54144)
    if (!optobj) return 0;
**** FILE PS:<C.KCC.CC>CCOPT.C.325, 13-75 (54658)
    if (!optobj) return 0;		/* Not optimizing */
#if 0	/* We try to check for generated addrs... */
    if (stackrefs) return 0;		/* Too risky */
#endif
***************

**** FILE PS:<C.KCC.CC>CCOPT.C.324, 13-154 (57797)
**** FILE PS:<C.KCC.CC>CCOPT.C.325, 13-165 (58440)
	** NOTE: if the "stackrefs" global indicates that the function makes
	** use of auto variable addresses, we have to make sure that this
	** instruction doesn't generate such an address.  If it does, we
	** punt completely as there's no telling what it may be used for.
***************

**** FILE PS:<C.KCC.CC>CCOPT.C.324, 13-161 (58074)
**** FILE PS:<C.KCC.CC>CCOPT.C.325, 13-176 (58991)
	/* Check for generating an auto variable address.  Of the ops
	** we recognize, only three things (XMOVEI, MOVE, ADJBP) should
	** be able to generate such addresses.
	*/
	if (stackrefs) {
	    if ((p->Pop&POF_OPCODE) == P_MOVE
	      && ((p->Ptype&PTF_IMM)				/* XMOVEI */
		|| ((p->Ptype&PTF_ADRMODE)==PTA_BYTEPOINT))) /* MOVE R,[bp] */
		return 0;
	    if ((p->Pop&POF_OPCODE) == P_ADJBP
	      && (p->Ptype&PTF_ADRMODE)==PTA_BYTEPOINT)	/* ADJBP R,[bp] */
		return 0;
	}
***************