This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/18065] usual arithmetic conversion not applying correctly


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-10-20 18:50 -------
>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. 

This is still not wrong code as signed char signed extended to int is still the same number but this is 
not a target problem but a front-end problem now.

To make sure that I read the statement correctly from the standard, it says if the types are the same 
there is no need to promote the value at all.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|minor                       |normal
          Component|target                      |c
            Summary|not using qi version of     |usual arithmetic conversion
                   |divmod                      |not applying correctly


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]