On 25.02.2016 14:48, Eric Blake wrote: > On 02/25/2016 04:15 AM, Pavel Hrdina wrote: >> On Wed, Feb 24, 2016 at 02:29:58PM -0700, Eric Blake wrote: >>> gcc 6.0 added an annoying warning: >>> >>> fdstream.c: In function 'virFDStreamWrite': >>> fdstream.c:390:29: error: logical 'or' of equal expressions [-Werror=logical-op] >>> if (errno == EAGAIN || errno == EWOULDBLOCK) { >>> ^~ >>> fdstream.c: In function 'virFDStreamRead': >>> fdstream.c:440:29: error: logical 'or' of equal expressions [-Werror=logical-op] >>> if (errno == EAGAIN || errno == EWOULDBLOCK) { >>> ^~ >>> >>> This makes it impossible to build out-of-the-box on rawhide, >>> and we aren't guaranteed that the gcc bug will be fixed in a >>> timely manner: >>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69602 >>> >>> So work around it by further complicating the logic to thwart the >>> compiler. >> >> Personally I don't like this approach. Why don't we take that 6 line reproducer >> from GCC BZ and create a m4 macro that will detect that bug in GCC and turn off >> the logical-op check? For me this solution is much cleaner than introducing >> some ugly workaround in our code just because GCC has a bug. > > Killing it for the entire tree seems like a rather heavy hammer. I'd > rather just add #pragma push/pop to ignore the warning around the few > places that it incorrectly triggers, leaving the rest of the tree still > protected (as it does catch real bugs, when we aren't dealing with > sometimes-aliased values coming from headers). Since not everybody is switching to gcc 6.0 (I'm stuck with 4.9.3 for a while now) we are still going to be able to catch those errors. Moreover, if the gcc bug is ever fixed we don't need to undo those pragmas. Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list