Subject: Re: bug#41615: [feature/native-comp] Dump prettier C code.

From: Andrea Corallo <[email-masked]>
Date: Sun, 31 May 2020 20:00:29 +0000

Nicolas Bértolo <[email-masked]> writes:

>> The whole compilation is something like 5x faster here.
> Amazing.I took a closer look at the code that uses casts to bools and
> I think I found a
> bug.
>
> Casting to bool using an enum is equivalent to taking the lowest byte using
> a byte mask. This wrongly casts to "false" integers whose lowest byte is nil.
>
> bool cast_from_unsigned_long_long_to_bool (unsigned long long x)
> {
>   return (x & 0xFF);
> }
>
> The correct way to cast to bool is to mimic C semantics:
>
> bool cast_from_unsigned_long_long_to_bool (unsigned long long x)
> {
>   if (x != 0)
>     return true;
>   else
>     return false;
> }
>
> Am I right?

You are.

I never fixed it (is present also in the pure union cast mechanism)
because I had not time so far and practically I suspect is not a real
case of problematic code we generate.  But is *certanly* good to fix.

BTW If you are into the mood to dig into these... also sign extentions
probably should be handled ;)

Andrea

-- 
[email-masked]