9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: adr <adr@SDF.ORG>
To: 9fans <9fans@9fans.net>
Subject: Re: [9fans] Conversion of constants in C compiler
Date: Wed, 20 Apr 2022 14:37:47 +0000 (UTC)	[thread overview]
Message-ID: <f7f21ddb-c26a-9cac-728-2f3a35c61cdc@SDF.ORG> (raw)
In-Reply-To: <CAOw7k5iOdaz2tDo3+1T-GQg_FOBdC_-TPWiUrffwBw=B4zRRiw@mail.gmail.com>

On Wed, 20 Apr 2022, Charles Forsyth wrote:

> The short answer is whatever the historical reasons for the current interpretation(s), it
> should follow C99 rules to avoid confusion.

This should do the trick. I hope to not have to send another patch in half an hour...

Charles, you are part of the p9f board, if you serve the 9legacy
sources there it would be really easy to send you a patch. In my
opinion it makes more sense to let the editions be archived as isos
and substitute the sources 9p service with a 9legacy one.

Just a suggestion,
adr.
/sys/src/cmd/cc/lex.c:
[...]
        vv = yylval.vval;
        if(c1 & Numvlong ||
          convvtox(vv, TUVLONG) > convvtox(vv, TULONG) ||
          (c1 & (Numdec|Numuns)) == Numdec && convvtox(vv, TLONG) < 0) {
                if((c1 & Numuns) || convvtox(vv, TVLONG) < 0) {
                        c = LUVLCONST;
                        t = TUVLONG;
                        goto nret;
                }
                c = LVLCONST;
                t = TVLONG;
                goto nret;
        }
        if(c1 & Numlong ||
          convvtox(vv, TULONG) > convvtox(vv, TUINT) ||
          (c1 & (Numdec|Numuns)) == Numdec && convvtox(vv, TINT) < 0) {
                if((c1 & Numuns) || convvtox(vv, TLONG) < 0) {
                        c = LULCONST;
                        t = TULONG;
                        goto nret;
                }
                c = LLCONST;
                t = TLONG;
                goto nret;
        }
        if((c1 & Numuns) || convvtox(vv, TINT) < 0) {
                c = LUCONST;
                t = TUINT;
                goto nret;
        }
        c = LCONST;
        t = TINT;
        goto nret;

nret:
        yylval.vval = convvtox(vv, t);
        if(yylval.vval != vv){
                nearln = lineno;
                warn(Z, "truncated constant: %T %s", types[t], symb);
        }
        return c;
[...]

------------------------------------------
9fans: 9fans
Permalink: https://9fans.topicbox.com/groups/9fans/T22754f10b241991c-Mabed3218d4cc85a6f48f03f7
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription

  reply	other threads:[~2022-04-20 14:38 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-20 10:19 adr
2022-04-20 11:38 ` Charles Forsyth
2022-04-20 14:37   ` adr [this message]
2022-04-20 14:37 ` ori
2022-04-21  7:54   ` adr
2022-04-21 15:29     ` ori
2022-04-28  1:10     ` ori
2022-05-01 12:03       ` adr
2022-04-28  2:43     ` ori
2022-04-28  3:12       ` ori
2022-05-01 12:35       ` adr
2022-05-09 19:31         ` adr
2022-05-10 13:06           ` adr
2022-05-10 14:48             ` adr
2022-06-06  0:35 adr

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f7f21ddb-c26a-9cac-728-2f3a35c61cdc@SDF.ORG \
    --to=adr@sdf.org \
    --cc=9fans@9fans.net \
    --subject='Re: [9fans] Conversion of constants in C compiler' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).