|
From: | Andrea Corallo |
Subject: | bug#41615: [feature/native-comp] Dump prettier C code. |
Date: | Sun, 31 May 2020 20:00:29 +0000 |
User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Nicolas Bértolo <nicolasbertolo@gmail.com> 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 -- akrl@sdf.org
[Prev in Thread] | Current Thread | [Next in Thread] |