public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "schlie at comcast dot net" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/18065] usual arithmetic conversion not applying correctly
Date: Wed, 20 Oct 2004 23:28:00 -0000	[thread overview]
Message-ID: <20041020232841.26887.qmail@sourceware.org> (raw)
In-Reply-To: <20041019202143.18065.schlie@comcast.net>


------- Additional Comments From schlie at comcast dot net  2004-10-20 23:28 -------
Subject: Re:  usual arithmetic conversion not
 applying correctly

What size promotion is required for char sized integer operations?

 I see none?

What size promotion is required for short sized integer operations?

 I see none?

The standard's refers to (as below earlier already referenced by Andrew):

- "integer" promotion is performed on both operands, and then further size
and/or sign-type converted as required if the operands aren't already of the
same "integer" type.

"integer type" not "int"; char, short, int, long are "integer types" of
different rank, yes?

The only primitive storage classes in C which aren't intrinsically an
"integer type" are: bool, enum, and bit-fields to my knowledge, which
require implicit promotion to an "integer type" to be operated on.

Even if you said that char's aren't "integer types" it's easy enough to
define short as having the same size as char, thereby promote char->short
which is surely an "integer type", although char's already are.

Where am I missing it?

>From C99
(6.5.5/3): The usual arithmetic conversions are performed on the operands.

6.3.1.8 Usual arithmetic conversions
Otherwise, the integer promotions are performed on both operands. Then the
following rules are
applied to the promoted operands: If both operands have the same type, then
no further conversion is
needed. Otherwise, if both operands have signed integer types or both have
unsigned integer types, the
operand with the type of lesser integer conversion rank is converted to the
type of the operand with
greater rank. Otherwise, if the operand that has unsigned integer type has
rank greater or equal to the
rank of the type of the other operand, then the operand with signed integer
type is converted to the
type of the operand with unsigned integer type. Otherwise, if the type of
the operand with signed
integer type can represent all of the values of the type of the operand with
unsigned integer type, then
the operand with unsigned integer type is converted to the type of the
operand with signed integer
type. Otherwise, both operands are converted to the unsigned integer type
corresponding to the type of
the operand with signed integer type.


> From: jsm at polyomino dot org dot uk <gcc-bugzilla@gcc.gnu.org>
> Reply-To: <gcc-bugzilla@gcc.gnu.org>
> Date: 20 Oct 2004 22:41:59 -0000
> To: <schlie@comcast.net>
> Subject: [Bug tree-optimization/18065] usual arithmetic conversion not
> applying correctly
> 
> 
> ------- Additional Comments From jsm at polyomino dot org dot uk  2004-10-20
> 22:41 -------
> Subject: Re:  usual arithmetic conversion not applying correctly
> 
> On Wed, 20 Oct 2004, schlie at comcast dot net wrote:
> 
>>  It's a pretty major screw-up to presume
>>  all target machines are large, and then to encode that presumption into
>>  C's front end; not to mention it seems pretty stupid to do, and then
> 
> This is not a GCC presumption, it is a property of the C language that
> there are certain promotions that may not be optimally efficient for 8-bit
> targets.  If there is a "major screw-up", it is either in the choice to
> use a language designed for systems that are at least 16-bit on an 8-bit
> target, or in the language design if you think 8-bit targets should have
> been given greater importance when the language was being standardised in
> the 1980s; it is nothing to do with the front end.  The AVR target has a
> -mint8 option which puts the compiler in a nonconforming mode with 8-bit
> int, which might however give you better code than you can get with
> standard C on an 8-bit target.
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18065
> 
> ------- You are receiving this mail because: -------
> You reported the bug, or are watching the reporter.




-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18065


  parent reply	other threads:[~2004-10-20 23:28 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-19 20:22 [Bug c/18065] New: wrong built-in functions selected schlie at comcast dot net
2004-10-19 20:27 ` [Bug c/18065] " schlie at comcast dot net
2004-10-19 20:39 ` [Bug target/18065] " pinskia at gcc dot gnu dot org
2004-10-19 21:18 ` schlie at comcast dot net
2004-10-19 21:31 ` schlie at comcast dot net
2004-10-19 21:39 ` [Bug target/18065] not using qi version of divmod pinskia at gcc dot gnu dot org
2004-10-19 21:53 ` schlie at comcast dot net
2004-10-19 22:08 ` ericw at evcohs dot com
2004-10-19 22:31 ` schlie at comcast dot net
2004-10-19 23:13 ` ericw at evcohs dot com
2004-10-20 18:34 ` schlie at comcast dot net
2004-10-20 18:50 ` [Bug c/18065] usual arithmetic conversion not applying correctly pinskia at gcc dot gnu dot org
2004-10-20 19:14 ` schlie at comcast dot net
2004-10-20 19:18 ` pinskia at gcc dot gnu dot org
2004-10-20 19:25 ` pinskia at gcc dot gnu dot org
2004-10-20 19:29 ` pinskia at gcc dot gnu dot org
2004-10-20 19:33 ` schlie at comcast dot net
2004-10-20 19:54 ` pinskia at gcc dot gnu dot org
2004-10-20 21:19 ` schlie at comcast dot net
2004-10-20 21:25 ` pinskia at gcc dot gnu dot org
2004-10-20 21:31 ` jsm at polyomino dot org dot uk
2004-10-20 21:46 ` schlie at comcast dot net
2004-10-20 22:27 ` schlie at comcast dot net
2004-10-20 22:31 ` [Bug tree-optimization/18065] " pinskia at gcc dot gnu dot org
2004-10-20 22:42 ` jsm at polyomino dot org dot uk
2004-10-20 23:03 ` jsm at polyomino dot org dot uk
2004-10-20 23:28 ` schlie at comcast dot net [this message]
2004-10-21  1:04 ` schlie at comcast dot net
2004-10-21  1:28 ` schlie at comcast dot net
2004-10-21 12:47 ` bangerth at dealii dot org
2004-12-21 20:50 ` schlie at comcast dot net
2005-01-16  1:39 ` pinskia at gcc dot gnu dot org
2005-01-16  7:17 ` schlie at comcast dot net
2005-01-16 17:39 ` schlie at comcast dot net
     [not found] <bug-18065-9497@http.gcc.gnu.org/bugzilla/>
2010-09-14  7:06 ` abnikant dot singh at atmel dot com
2010-09-14  7:13 ` abnikant dot singh at atmel dot com
     [not found] <bug-18065-4@http.gcc.gnu.org/bugzilla/>
2012-05-24 14:03 ` peter777778 at hotmail dot co.uk
2012-05-24 14:04 ` peter777778 at hotmail dot co.uk
2012-05-24 14:05 ` peter777778 at hotmail dot co.uk
2012-05-24 14:23 ` peter777778 at hotmail dot co.uk

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=20041020232841.26887.qmail@sourceware.org \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).