[Bug target/84077] New: Likely wrong code with `__builtin_expect()` on i686-linux-gnu
floessie.mail at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Jan 27 21:06:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84077
Bug ID: 84077
Summary: Likely wrong code with `__builtin_expect()` on
i686-linux-gnu
Product: gcc
Version: 7.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: floessie.mail at gmail dot com
Target Milestone: ---
Created attachment 43263
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43263&action=edit
CMake generated compile command line
Hi,
We're having some strange behavior with `__builtin_expect()` on
i686-linux-gnu in RawTherapee, probably due to wrong code generation.
The `__builtin_expect()` is used as
#define LIKELY(x) __builtin_expect (!!(x), 1)
in our code and employed in an `if` within an OpenMP for loop:
https://github.com/Beep6581/RawTherapee/blob/f5bd232cd2a1d709a25c3b3feda88ebf86dd6092/rtengine/dcp.cc#L1077
When compiling RawTherapee on i686 with a vanilla GCC 7.3 a RAW with
a supplied DCP base table will show obviously wrong colors. This is
neither the case with (the Debian) GCC 6.4 on i686 nor with GCC 7.2
on x86_64, but also with GCC 7.2 on i686.
We've worked around that problem by disabling the use of `__builtin_expect()`
on 32 bit platforms with GCC >= 7 for now. See
https://github.com/Beep6581/RawTherapee/pull/4324#issuecomment-360110007
for the original issue.
Reproducing the problem requires building RawTherapee. You can find
instructions for various distributions here:
http://rawpedia.rawtherapee.com/Linux
After cloning, please checkout the commit right before we worked around
the bug:
git checkout f5bd232cd2a1d709a25c3b3feda88ebf86dd6092
You can find an image to test here:
http://rawtherapee.com/shared/test_images/amsterdam.pef
As soon as you open it, the wrong colors will be apparent, as the DCP
base table should be active, otherwise you can find it on the "Color"
tab.
If I forgot anything, just let me know. I can also test patches against
vanilla GCC 7.3.
On behalf of the RawTherapee team,
Flössie
More information about the Gcc-bugs
mailing list