+ if (typ != TR_NIL && typ->tag == T_TYCARY) {
+# ifdef OBJ
+ w = -even(lwidth(p->chain));
+# ifndef DEC11
+ w = (w > -2)? w + 1 : w;
+# endif
+# endif OBJ
+# ifdef PC
+ w = lwidth(p->chain);
+ o = roundup(o, (long)A_STACK);
+# endif PC
+ /*
+ * Allocate space for upper and
+ * lower bounds and width.
+ */
+ for (s=typ; s->tag == T_TYCARY; s = s->ary_ty.type) {
+ for (r=s->ary_ty.type_list; r != TR_NIL;
+ r = r->list_node.next) {
+ t = r->list_node.list;
+ p = p->chain;
+# ifdef OBJ
+ o += w;
+# endif OBJ
+ chainp->chain = defnl(t->crang_ty.lwb_var,
+ VAR, p, o);
+ chainp = chainp->chain;
+ chainp->nl_flags |= (NMOD | NUSED);
+ p->nptr[0] = chainp;
+ o += w;
+ chainp->chain = defnl(t->crang_ty.upb_var,
+ VAR, p, o);
+ chainp = chainp->chain;
+ chainp->nl_flags |= (NMOD | NUSED);
+ p->nptr[1] = chainp;
+ o += w;
+ chainp->chain = defnl(0, VAR, p, o);
+ chainp = chainp->chain;
+ chainp->nl_flags |= (NMOD | NUSED);
+ p->nptr[2] = chainp;
+# ifdef PC
+ o += w;
+# endif PC
+ }
+ }
+ }