[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pcc-list
Subject:    Re: Fixes for MIPS, pt. 2 (resend)
From:       Anders Magnusson <ragge () ludd ! ltu ! se>
Date:       2010-09-19 13:57:47
Message-ID: 4C9616DB.2060307 () ludd ! ltu ! se
[Download RAW message or body]

Checked in, thanks.

On 09/15/2010 05:53 PM, Alt wrote:
> Using diff -u per popular demand.
>
> Index: local.c
> ===================================================================
> RCS file: /cvsroot/pcc/arch/mips/local.c,v
> retrieving revision 1.21
> diff -u -r1.21 local.c
> --- local.c	7 Sep 2009 08:06:35 -0000	1.21
> +++ local.c	15 Sep 2010 15:47:56 -0000
> @@ -76,14 +76,14 @@
>   		 */
>   		if (p->n_type == PTR+VOID)
>   			isptrvoid = 1;
> -		r = tempnode(0, p->n_type, p->n_df, p->n_sue);
> +		r = tempnode(0, p->n_type, p->n_df, p->n_ap);
>   		tmpnr = regno(r);
> -		r = block(ASSIGN, r, p, p->n_type, p->n_df, p->n_sue);
> +		r = block(ASSIGN, r, p, p->n_type, p->n_df, p->n_ap);
>
> -		p = tempnode(tmpnr, r->n_type, r->n_df, r->n_sue);
> +		p = tempnode(tmpnr, r->n_type, r->n_df, r->n_ap);
>   		if (isptrvoid) {
>   			p = block(PCONV, p, NIL, PTR+VOID,
> -			    p->n_df, MKSUE(PTR+VOID));
> +			    p->n_df, MKAP(PTR+VOID));
>   		}
>   		p = buildtree(COMOP, r, p);
>   		break;
> @@ -124,9 +124,9 @@
>   		if (p->n_type != CHAR&&  p->n_type != UCHAR&&
>   		p->n_type != SHORT&&  p->n_type != USHORT)
>   			break;
> -		p->n_left = block(SCONV, p->n_left, NIL, INT, 0, MKSUE(INT));
> +		p->n_left = block(SCONV, p->n_left, NIL, INT, 0, MKAP(INT));
>   		p->n_type = INT;
> -		p->n_sue = MKSUE(INT);
> +		p->n_ap = MKAP(INT);
>   		p->n_rval = SZINT;
>   		break;
>
> @@ -174,7 +174,7 @@
>   		if (l->n_type<  INT || DEUNSIGN(l->n_type) == LONGLONG) {
>   			/* float etc? */
>   			p->n_left = block(SCONV, l, NIL,
> -			    UNSIGNED, 0, MKSUE(UNSIGNED));
> +			    UNSIGNED, 0, MKAP(UNSIGNED));
>   			break;
>   		}
>   		/* if left is SCONV, cannot remove */
> @@ -193,7 +193,7 @@
>   	delp:	l->n_type = p->n_type;
>   		l->n_qual = p->n_qual;
>   		l->n_df = p->n_df;
> -		l->n_sue = p->n_sue;
> +		l->n_ap = p->n_ap;
>   		nfree(p);
>   		p = l;
>   		break;
> @@ -208,7 +208,7 @@
>   		}
>
>   		if ((p->n_type&  TMASK) == 0&&  (l->n_type&  TMASK) == 0&&
> -		    btdims[p->n_type].suesize == btdims[l->n_type].suesize) {
> +		    btattr[p->n_type].atypsz == btattr[l->n_type].atypsz) {
>   			if (p->n_type != FLOAT&&  p->n_type != DOUBLE&&
>   			l->n_type != FLOAT&&  l->n_type != DOUBLE&&
>   			l->n_type != LDOUBLE&&  p->n_type != LDOUBLE) {
> @@ -240,7 +240,7 @@
>   		    DEUNSIGN(p->n_type) == SHORT)&&
>                       (l->n_type == FLOAT || l->n_type == DOUBLE ||
>   		    l->n_type == LDOUBLE)) {
> -			p = block(SCONV, p, NIL, p->n_type, p->n_df, p->n_sue);
> +			p = block(SCONV, p, NIL, p->n_type, p->n_df, p->n_ap);
>   			p->n_left->n_type = INT;
>   			break;
>                   }
> @@ -249,7 +249,7 @@
>   		if  ((p->n_type == FLOAT || p->n_type == DOUBLE ||
>   		    p->n_type == LDOUBLE)&&  (DEUNSIGN(l->n_type) == CHAR ||
>   		    DEUNSIGN(l->n_type) == SHORT)) {
> -			p = block(SCONV, p, NIL, p->n_type, p->n_df, p->n_sue);
> +			p = block(SCONV, p, NIL, p->n_type, p->n_df, p->n_ap);
>   			p->n_left->n_type = INT;
>   			break;
>                   }
> @@ -310,7 +310,7 @@
>   			l->n_sp = NULL;
>   			l->n_op = ICON;
>   			l->n_type = m;
> -			l->n_sue = MKSUE(m);
> +			l->n_ap = MKAP(m);
>   			nfree(p);
>   			p = clocal(l);
>   		}
> @@ -323,9 +323,9 @@
>   		if (o == MOD&&  p->n_type != CHAR&&  p->n_type != SHORT)
>   			break;
>   		/* make it an int division by inserting conversions */
> -		p->n_left = block(SCONV, p->n_left, NIL, INT, 0, MKSUE(INT));
> -		p->n_right = block(SCONV, p->n_right, NIL, INT, 0, MKSUE(INT));
> -		p = block(SCONV, p, NIL, p->n_type, 0, MKSUE(p->n_type));
> +		p->n_left = block(SCONV, p->n_left, NIL, INT, 0, MKAP(INT));
> +		p->n_right = block(SCONV, p->n_right, NIL, INT, 0, MKAP(INT));
> +		p = block(SCONV, p, NIL, p->n_type, 0, MKAP(p->n_type));
>   		p->n_left->n_type = INT;
>   		break;
>
> @@ -340,7 +340,7 @@
>   		/* put return value in return reg */
>   		p->n_op = ASSIGN;
>   		p->n_right = p->n_left;
> -		p->n_left = block(REG, NIL, NIL, p->n_type, 0, MKSUE(INT));
> +		p->n_left = block(REG, NIL, NIL, p->n_type, 0, MKAP(INT));
>   		p->n_left->n_rval = RETREG(p->n_type);
>   		break;
>   	}
> @@ -367,7 +367,7 @@
>
>   	sp = IALLOC(sizeof(struct symtab));
>   	sp->sclass = STATIC;
> -	sp->ssue = MKSUE(p->n_type);
> +	sp->sap = MKAP(p->n_type);
>   	sp->slevel = 1; /* fake numeric label */
>   	sp->soffset = getlab();
>   	sp->sflags = 0;
> @@ -375,7 +375,7 @@
>   	sp->squal = (CON>>  TSHIFT);
>
>   	defloc(sp);
> -	ninval(0, sp->ssue->suesize, p);
> +	ninval(0, sp->sap->atypsz, p);
>
>   	p->n_op = NAME;
>   	p->n_lval = 0;
> @@ -419,13 +419,13 @@
>    * indirections must be fullword.
>    */
>   NODE *
> -offcon(OFFSZ off, TWORD t, union dimfun *d, struct suedef *sue)
> +offcon(OFFSZ off, TWORD t, union dimfun *d, struct attr *sue)
>   {
>   	NODE *p;
>
>   	if (xdebug)
>   		printf("offcon: OFFSZ %lld type %x dim %p siz %d\n",
> -		    off, t, d, sue->suesize);
> +		    off, t, d, 0);
>
>   	p = bcon(off/SZCHAR);
>   	return p;
> @@ -453,7 +453,7 @@
>   	ecomp(buildtree(MINUSEQ, sp, p));
>
>   	/* save the address of sp */
> -	sp = block(REG, NIL, NIL, PTR+INT, t->n_df, t->n_sue);
> +	sp = block(REG, NIL, NIL, PTR+INT, t->n_df, t->n_ap);
>   	sp->n_rval = SP;
>   	t->n_type = sp->n_type;
>   	ecomp(buildtree(ASSIGN, t, sp)); /* Emit! */
> @@ -581,7 +581,7 @@
>    * This routine returns the storage class for an uninitialized declaration
>    */
>   int
> -noinit()
> +noinit(void)
>   {
>   	return(EXTERN);
>   }
> @@ -631,7 +631,7 @@
>   {
>   	int off;
>
> -	off = tsize(sp->stype, sp->sdf, sp->ssue);
> +	off = tsize(sp->stype, sp->sdf, sp->sap);
>   	off = (off+(SZCHAR-1))/SZCHAR;
>   	printf("	.%scomm ", sp->sclass == STATIC ? "l" : "");
>   	if (sp->slevel == 0)
> @@ -779,7 +779,7 @@
>   	p = a->n_right;
>   	if (p->n_type<  INT) {
>   		/* round up to word */
> -		sz = SZINT / tsize(p->n_type, p->n_df, p->n_sue);
> +		sz = SZINT / tsize(p->n_type, p->n_df, p->n_ap);
>   	}
>
>   	p = buildtree(ADDROF, p, NIL);	/* address of last arg */
> @@ -814,7 +814,7 @@
>   	r = a->n_right;
>
>   	/* get type size */
> -	sz = tsize(r->n_type, r->n_df, r->n_sue) / SZCHAR;
> +	sz = tsize(r->n_type, r->n_df, r->n_ap) / SZCHAR;
>   	if (sz<  SZINT/SZCHAR) {
>   		werror("%s%s promoted to int when passed through ...",
>   			r->n_type&  1 ? "unsigned " : "",
> @@ -826,15 +826,15 @@
>   	p = tcopy(a->n_left);
>   	if (sz>  SZINT/SZCHAR&&  r->n_type != UNIONTY&&  r->n_type != STRTY) {
>   		p = buildtree(PLUS, p, bcon(7));
> -		p = block(AND, p, bcon(-8), p->n_type, p->n_df, p->n_sue);
> +		p = block(AND, p, bcon(-8), p->n_type, p->n_df, p->n_ap);
>   	}
>
>   	/* create a copy to a temp node */
> -	q = tempnode(0, p->n_type, p->n_df, p->n_sue);
> +	q = tempnode(0, p->n_type, p->n_df, p->n_ap);
>   	tmpnr = regno(q);
>   	p = buildtree(ASSIGN, q, p);
>
> -	q = tempnode(tmpnr, p->n_type, p->n_df,p->n_sue);
> +	q = tempnode(tmpnr, p->n_type, p->n_df,p->n_ap);
>   	q = buildtree(PLUS, q, bcon(sz));
>   	q = buildtree(ASSIGN, a->n_left, q);
>
> @@ -844,7 +844,7 @@
>   	nfree(a);
>   	nfree(f);
>
> -	p = tempnode(tmpnr, INCREF(r->n_type), r->n_df, r->n_sue);
> +	p = tempnode(tmpnr, INCREF(r->n_type), r->n_df, r->n_ap);
>   	p = buildtree(UMUL, p, NIL);
>   	p = buildtree(COMOP, q, p);
>
>    

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic