Current implementation of the synchronization builtins in gcc (from http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/lin/compiler_c/intref_cls/common/intref_itanium_synchro_prim.htm) describe <type> as unsigned. although it is stated as "<type> is either a 32-bit or 64-bit integer"
consequently, testsuite tests such as sync-2.c: if (__sync_sub_and_fetch(AI+13, 12) != (char)-12) abort (); might fail. (unless the target/runtime dependant primitive implementation artificially change the return type). -- Summary: synchronisation primitives take unsigned as input and output values. Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: trivial Priority: P3 Component: treelang AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: chrbr at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41639