Attached testcases fail on x86_64 (with cmpxchg16b) or i386 (with cmpxchg8b), in both cases the problem is that reading the original value using FPU and storing it into a temporary doesn't mean bitwise identical copy (in the first case because long double is said to be a 16 byte type, even when the copy through FPU actually copies just 80 bits, and in the latter case because the copy turns the signalling NaN into a corresponding quiet NaN). This means both testcases hang. Will work on a fix.
-- Summary: #pragma omp atomic issues with floating point types Product: gcc Version: 4.3.1 Status: UNCONFIRMED Keywords: openmp Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36106