This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
current trunk/branches on x86_64-linux-gnu. return values with different
compilers and different optimizations:
-O0 -O1 -O2 -O3 gcc-4.1 0 2 2 2 gcc-4.3 0 2 2 2 gcc-4.4 2 0 0 0 gcc-4.5 0 1 0 0
Matthias
#include <stdbool.h> #include <stdio.h>
static bool atomic_test_and_reset_bit(unsigned long *v,unsigned long bit) {
bool res;
__asm__ __volatile__( "btr %2,%1\n" "adc $0,%0\n" :"=r"(res), "=m"(*v) :"r"(bit), "r"(0)) ; return res ? 1 : 0;
}
int main(void) { unsigned long flags = 0; int j;
j = atomic_test_and_reset_bit(&flags, 2);
printf("%d\n", j);
return 0; }
-- Summary: wrong code with -O1 Product: gcc Version: 4.4.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: debian-gcc at lists dot debian dot org GCC target triplet: x86_64-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42553
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |