This is the mail archive of the gcc@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]

Re: _Fract types and conversion routines


On Wed, Oct 28, 2015 at 12:23 AM, Steve Ellcey <sellcey@imgtec.com> wrote:
>
> I have a question about the _Fract types and their conversion routines.
> If I compile this program:
>
> extern void abort (void);
> int main ()
> {
>   signed char a = -1;
>   _Sat unsigned _Fract b = a;
>   if (b != 0.0ur)
>     abort();
>   return 0;
> }
>
> with -O0 and on a MIPS32 system where char is 1 byte and unsigned (int)
> is 4 bytes I see a call to '__satfractqiuhq' for the conversion.
>
> Now I think the 'qi' part of the name is for the 'from type' of the
> conversion, a 1 byte signed type (signed char), and the 'uhq' part is
> for the 'to' part of the conversion.  But 'uhq' would be a 2 byte
> unsigned fract, and the unsigned fract type on MIPS should be 4 bytes
> (unsigned int is 4 bytes).  So shouldn't GCC have generated a call to
> __satfractqiusq instead?  Or am I confused?

did it eventually narrow the comparison?  Just check some of the tree/RTL dumps.

> Steve Ellcey
> sellcey@imgtec.com


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