9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Bakul Shah <bakul+plan9@bitblocks.com>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] BUG!!! in Plan9 compiler!
Date: Thu, 22 Apr 2010 15:49:11 -0700	[thread overview]
Message-ID: <20100422224911.F14615B73@mail.bitblocks.com> (raw)
In-Reply-To: Your message of "Thu, 22 Apr 2010 23:15:51 +0200." <20100422211551.GA987@polynum.com>

On Thu, 22 Apr 2010 23:15:51 +0200 tlaronde@polynum.com  wrote:
> This is: signed long + signed long + unsigned char.

> Do you mean that there is first promotion :
>
> 	1) unsigned char is promoted to unsigned int (A6.1).

As per C89 in this case the unsigned char value should be
promoted to a *signed* int value.  The sum will be of type
signed int and so the division will do the right thing. In
kencc case it seems the sum has type unsigned int for some
reason and further, the signed divisor (2) is promoted to an
unsigned int. Seems like a bug.

Now that you know the problem, you can work around it by
setting type smallnumber to a signed char (since its range is
0..64 this should just work with either compiler).

> And when I do first assignment, there is only promotion (since no
> operator is here).

There is promotion since you did += but it doesn't matter.
In C, a variable has a static type and you can't override
this type by any assignment.

> Yielding the correct value in x2, that is then
> divided (or shifted) by 2, hence signed, and no problem?

Yes.



  parent reply	other threads:[~2010-04-22 22:49 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-22 15:29 tlaronde
2010-04-22 17:03 ` Bakul Shah
2010-04-22 17:36   ` tlaronde
2010-04-22 17:50     ` tlaronde
2010-04-22 19:08       ` geoff
2010-04-22 19:32         ` tlaronde
2010-04-22 20:07           ` Bakul Shah
2010-04-22 21:15             ` tlaronde
2010-04-22 21:26               ` tlaronde
2010-04-22 22:49               ` Bakul Shah [this message]
2010-04-23  7:42                 ` tlaronde
2010-04-23 18:53                 ` C H Forsyth
2010-04-23 18:51                   ` tlaronde
2010-04-23 20:08                   ` Bakul Shah
2010-04-23 20:46                     ` ron minnich
2010-04-23 21:44                       ` erik quanstrom
2010-04-23 22:34                       ` erik quanstrom
2010-04-24 18:59                         ` Bakul Shah
2010-04-24 21:47                           ` Charles Forsyth
2010-04-25  0:31                           ` erik quanstrom

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=20100422224911.F14615B73@mail.bitblocks.com \
    --to=bakul+plan9@bitblocks.com \
    --cc=9fans@9fans.net \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).