[Bug c/42382] New: _Bool foo &= bar; vs _Bool foo = foo && bar; vs _Bool foo = foo & bar; emitted code different
joe at perches dot com
gcc-bugzilla@gcc.gnu.org
Tue Dec 15 19:47:00 GMT 2009
gcc 4.4.1 produces different code for these equivalent inputs.
optimization levels -Os -O2 -O3
It'd be good if the produced code were identical.
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main(int argc, char** argv)
{
_Bool foo;
_Bool bar;
foo = !!rand();
bar = !!rand();
foo &= bar;
printf("%u %u\n", foo, bar);
foo = !!rand();
bar = !!rand();
foo = foo & bar;
printf("%u %u\n", foo, bar);
foo = !!rand();
bar = !!rand();
foo = foo && bar;
printf("%u %u\n", foo, bar);
return 0;
}
--
Summary: _Bool foo &= bar; vs _Bool foo = foo && bar; vs _Bool
foo = foo & bar; emitted code different
Product: gcc
Version: 4.4.1
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: joe at perches dot com
GCC build triplet: i486-linux-gnu
GCC host triplet: i486-linux-gnu
GCC target triplet: i486-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42382
More information about the Gcc-bugs
mailing list