--- ups-base/ups/ci_types.c	Tue Jun 11 10:18:42 2002
+++ ups-debug/ups/ci_types.c	Sat Jul 20 14:35:36 2002
@@ -494,6 +494,9 @@
 		long size;
 
 		switch(ci_effective_typecode(type->ty_code)) {
+		case PI_SAME_AS:
+			size = ci_typesize(lx, type->ty_base);
+			break;
 		case DT_PTR_TO:
 			size = POINTER_SIZE;
 			break;
--- ups-base/ups/va_decl.c	Tue Jun 11 10:18:42 2002
+++ ups-debug/ups/va_decl.c	Sat Jul 20 14:20:43 2002
@@ -217,6 +217,10 @@
 	if (ul_start)		/* RGA */
 	  bufs[cur][0] = MARKER_CH;
 	last = TY_NOTYPE;
+
+	while (type->ty_code == PI_SAME_AS) {
+		type = type->ty_base;
+	}
 	
 	level = 0;
 	for (;;) {
@@ -263,6 +267,10 @@
 		++level;
 	}
 
+	while (type->ty_code == PI_SAME_AS) {
+		type = type->ty_base;
+	}
+
 	bt = type->ty_code;
 	if (bt == TY_BITFIELD) {
 		bf = type->ty_bitfield;
--- ups-base/ups/va_menu.c	Tue Jun 11 10:18:42 2002
+++ ups-debug/ups/va_menu.c	Sat Jul 20 14:32:56 2002
@@ -785,9 +785,10 @@
 	type = get_type_at_level(v, dv->dv_ilevel);
 	ilevel = dv->dv_ilevel;
 	if (btype->ty_code == TY_STRUCT || btype->ty_code == TY_UNION)
-		for (; type->ty_code == DT_PTR_TO || type->ty_code == DT_ARRAY_OF;
+		for (; type->ty_code == PI_SAME_AS || type->ty_code == DT_PTR_TO || type->ty_code == DT_ARRAY_OF;
 								type = type->ty_base)
-			change_dv_level(dv, CL_UP);
+			if (type->ty_code == DT_PTR_TO || type->ty_code == DT_ARRAY_OF)
+				change_dv_level(dv, CL_UP);
 	if (dv->dv_ilevel != ilevel)
 		redo_decl(dv);
 	return type;
--- ups-base/ups/va_type.c	Tue Jun 11 10:18:42 2002
+++ ups-debug/ups/va_type.c	Sat Jul 20 14:31:54 2002
@@ -299,7 +299,7 @@
 get_basetype(type)
 type_t *type;
 {
-	while (ISDERIV(type->ty_code))
+	while (type->ty_code == PI_SAME_AS || ISDERIV(type->ty_code))
 		type = type->ty_base;
 	return type;
 }
--- ups-base/ups/va_val.c	Tue Jun 11 10:18:42 2002
+++ ups-debug/ups/va_val.c	Sat Jul 20 14:37:40 2002
@@ -551,6 +551,10 @@
 	if (ISDERIV(type))
 		panic("unexpected type in mkval");
 
+	while (type->ty_code == PI_SAME_AS) {
+		type = type->ty_base;
+	}
+
 	if (addr == 0 && v->va_type->ty_code == DT_PTR_TO) {
                 if (IS_FORTRAN(v->va_language) && dv->dv_ilevel >= 1)
                         return "<unassociated>";
