From 0976dfa3b962756a9d9d9af8ca31d2db39e608e2 Mon Sep 17 00:00:00 2001 From: ceriel Date: Mon, 21 Mar 1988 17:06:20 +0000 Subject: [PATCH] too many changes: some cosmetic; some for 2/4; some for added options --- lang/m2/comp/cstoper.c | 16 +++++++++++++--- lang/m2/comp/declar.g | 15 +++++---------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/lang/m2/comp/cstoper.c b/lang/m2/comp/cstoper.c index 62987f02a..9224aef0b 100644 --- a/lang/m2/comp/cstoper.c +++ b/lang/m2/comp/cstoper.c @@ -38,7 +38,17 @@ extern char options[]; overflow(expp) t_node *expp; { - node_warning(expp, W_ORDINARY, "overflow in constant expression"); + if (expp->nd_type != address_type) { + node_warning(expp, W_ORDINARY, "overflow in constant expression"); + } +} + +underflow(expp) + t_node *expp; +{ + if (expp->nd_type != address_type) { + node_warning(expp, W_ORDINARY, "underflow in constant expression"); + } } STATIC @@ -295,10 +305,10 @@ cstubin(expp) if (expp->nd_type->tp_fund == T_INTORCARD) { expp->nd_type = int_type; if (! chk_bounds(min_int[sz], o1 - o2, T_CARDINAL)) { - overflow(expp); + underflow(expp); } } - else overflow(expp); + else underflow(expp); } o1 -= o2; break; diff --git a/lang/m2/comp/declar.g b/lang/m2/comp/declar.g index dbab52fcb..f19168abc 100644 --- a/lang/m2/comp/declar.g +++ b/lang/m2/comp/declar.g @@ -150,10 +150,7 @@ FPSection(t_param **ppr; arith *parmaddr;) { EnterParamList(ppr, FPList, tp, VARp, parmaddr); } ; -FormalType(t_type **ptp;) -{ - extern arith ArrayElSize(); -} : +FormalType(t_type **ptp;) : ARRAY OF qualtype(ptp) { /* index type of conformant array is "CARDINAL". Recognize a conformant array by size 0. @@ -162,11 +159,10 @@ FormalType(t_type **ptp;) tp->arr_elem = *ptp; *ptp = tp; - tp->arr_elsize = ArrayElSize(tp->arr_elem); - tp->tp_align = tp->arr_elem->tp_align; + ArrayElSize(tp); } | - qualtype(ptp) + qualtype(ptp) ; TypeDeclaration @@ -289,7 +285,7 @@ RecordType(t_type **ptp;) warning(W_ORDINARY, "empty record declaration"); size = 1; } - *ptp = standard_type(T_RECORD, xalign, size); + *ptp = standard_type(T_RECORD, xalign, align(size, xalign)); (*ptp)->rec_scope = scope; } END @@ -408,8 +404,7 @@ CaseLabels(t_type **ptp; register t_node **pnd;) }: ConstExpression(pnd) { - if (*ptp != 0) { - ChkCompat(pnd, *ptp, "case label"); + if (*ptp != 0 && ChkCompat(pnd, *ptp, "case label")) { } nd = *pnd; if (! (nd->nd_type->tp_fund & T_DISCRETE) || -- 2.34.1