From: eck Date: Wed, 13 Dec 1989 12:53:22 +0000 (+0000) Subject: fixed sizeof() X-Git-Tag: release-5-5~2010 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=8790a879c916a2ac8efa3889d0a7cd5f39d31b71;p=ack.git fixed sizeof() --- diff --git a/lang/cem/cemcom.ansi/ch3mon.c b/lang/cem/cemcom.ansi/ch3mon.c index be2692f64..801b2f917 100644 --- a/lang/cem/cemcom.ansi/ch3mon.c +++ b/lang/cem/cemcom.ansi/ch3mon.c @@ -16,6 +16,7 @@ #include "expr.h" #include "idf.h" #include "def.h" +#include "sizes.h" extern char options[]; extern arith full_mask[/*MAXSIZE*/]; /* cstoper.c */ @@ -150,7 +151,7 @@ ch3mon(oper, expp) (arith)((*expp)->SG_LEN) : size_of_type((*expp)->ex_type, symbol2str((*expp)->ex_type->tp_fund)) - , ULONG); + , (int_size == pointer_size ? UNSIGNED : ULONG)); expr->ex_flags |= EX_SIZEOF; free_expression(*expp); *expp = expr; diff --git a/lang/cem/cemcom.ansi/expression.g b/lang/cem/cemcom.ansi/expression.g index cc388bbe4..2771b4d27 100644 --- a/lang/cem/cemcom.ansi/expression.g +++ b/lang/cem/cemcom.ansi/expression.g @@ -16,6 +16,7 @@ #include "label.h" #include "expr.h" #include "code.h" +#include "sizes.h" extern struct expr *intexpr(); int InSizeof = 0; /* inside a sizeof- expression */ @@ -146,7 +147,8 @@ size_of(register struct expr **expp;) [%if (first_of_type_specifier(AHEAD) && AHEAD != IDENTIFIER) cast(&tp) { - *expp = intexpr(size_of_type(tp, "type"), ULONG); + *expp = intexpr(size_of_type(tp, "type"), + (int_size == pointer_size ? UNSIGNED : ULONG)); (*expp)->ex_flags |= EX_SIZEOF; } |