------- Comment #2 from brian dot e dot bliss at intel dot com 2007-11-09 00:06 ------- Subject: RE: Bogus codegen for openmp atomics w/ indirects operands on IPF
The C example looks correct (but you have to use the += operator to get a legal example, which might have affected things): % cat foo.c void foo(float *lhs, float*rhs) { #pragma omp atomic *lhs += *rhs; } % gcc -fopenmp -O1 -S foo.c % cat foo.s .file "foo.c" .pred.safe_across_calls p1-p5,p16-p63 .text .align 16 .global foo# .proc foo# foo: .prologue .body ldfs f6 = [r33] ld4 r15 = [r32] ;; mov r16 = r15 .L2: setf.s f7 = r15 ;; fadd.s f7 = f7, f6 ;; getf.s r15 = f7 addp4 r14 = r16, r0 ;; mov ar.ccv = r14 mf ;; cmpxchg4.rel r17 = [r32], r15, ar.ccv ;; mov r15 = r17 cmp4.eq p6, p7 = r17, r16 (p6) br.ret.dpnt.many rp mov r16 = r17 br .L2 ;; .endp foo# .ident "GCC: (GNU) 4.2.0" -bb -----Original Message----- From: fxcoudert at gcc dot gnu dot org [mailto:[EMAIL PROTECTED] Sent: Thursday, November 08, 2007 6:50 AM To: Bliss, Brian E Subject: [Bug fortran/34020] Bogus codegen for openmp atomics w/ indirects operands on IPF ------- Comment #1 from fxcoudert at gcc dot gnu dot org 2007-11-08 12:49 ------- Does the same thing happen with C? void foo(float *lhs, float*rhs) { #pragma omp atomic *lhs = *rhs + *lhs; } -- fxcoudert at gcc dot gnu dot org changed: What |Removed |Added ------------------------------------------------------------------------ ---- CC| |fxcoudert at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34020 ------- You are receiving this mail because: ------- You reported the bug, or are watching the reporter. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34020