File:  [MW Coherent from dump] / coherent / b / bin / c / n1 / i8086 / mtree4.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Wed May 29 04:56:37 2019 UTC (7 years, 2 months ago) by root
Branches: MarkWilliams, MAIN
CVS tags: relic, HEAD
coherent

/*
 * This file contains a number
 * of machine specific tree modification
 * functions. These are for the SMALL
 * and LARGE model Intel iAPX-86.
 */
#ifdef   vax
#include "INC$LIB:cc1.h"
#else
#include "cc1.h"
#endif

/*
 * This routine figures out 
 * the left subgoal context. It watches
 * for `test' instructions on the
 * 8086.
 */
getldown(tp, c)
TREE *tp;
{
	if (c==MFLOW && (tp->t_rp->t_flag&T_IMM)!=0)
		return (MRADDR);
	return (MRVALUE);
}

/*
 * This routine figures out the
 * right hand subgoal contexts for the
 * shift instruction.
 */
getrdown(tp, c)
TREE *tp;
{
	register op;

	if ((op=tp->t_rp->t_op)==ICON || op==LCON)
		return (MRADDR);
	return (MRVALUE);
}

/*
 * Fix up the type of a reordered
 * ADD node. Watch for pointers.
 */
fixaddtype(tp)
TREE *tp;
{
	register tt;
	register lt, rt;

	lt = tp->t_lp->t_type;
	rt = tp->t_rp->t_type;
	if (ispoint(lt))
		tt = lt;
	else if (ispoint(rt))
		tt = rt;
	else if (islong(lt))
		tt = lt;
	else if (islong(rt))
		tt = rt;
	else
		tt = lt;
	tp->t_type = tt;
}

/*
 * Zap the type field of tree
 * node `tp' into the type used for
 * offset addressing trees.
 */
setofstype(tp)
TREE *tp;
{
#if !ONLYSMALL
	if (notvariant(VSMALL))
		tp->t_type = LOFS;
	else
#endif
		tp->t_type = SOFS;
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.