]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/36877 (-O0 -fopenmp -march=i386 atomics)
authorJakub Jelinek <jakub@redhat.com>
Sat, 19 Jul 2008 19:22:51 +0000 (21:22 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 19 Jul 2008 19:22:51 +0000 (21:22 +0200)
PR middle-end/36877
* omp-low.c (expand_omp_atomic_fetch_op): Make sure the
return value of the builtin is ignored.

* gcc.dg/gomp/atomic-11.c: New test.

From-SVN: r137989

gcc/ChangeLog
gcc/omp-low.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/gomp/atomic-11.c [new file with mode: 0644]

index 392ba5876c9db4848b1803e936ace5924e726943..701b25f787e0e2d185c033080f50062d89f28d5b 100644 (file)
@@ -1,3 +1,9 @@
+2008-07-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/36877
+       * omp-low.c (expand_omp_atomic_fetch_op): Make sure the
+       return value of the builtin is ignored.
+
 2008-07-19  Olivier Hainque  <hainque@adacore.com>
 
        * doc/tm.texi (MALLOC_ABI_ALIGNMENT): New macro. Alignment, in
index 2f9aedeac39933f5a8b12aa2339fd7b22d32917f..8ee717a36a1e249cb64bb6186fcdab6005614d5f 100644 (file)
@@ -4742,6 +4742,7 @@ expand_omp_atomic_fetch_op (basic_block load_bb,
   bsi = bsi_last (load_bb);
   gcc_assert (TREE_CODE (bsi_stmt (bsi)) == OMP_ATOMIC_LOAD);
   call = build_call_expr (decl, 2, addr, fold_convert (itype, rhs));
+  call = fold_convert (void_type_node, call);
   force_gimple_operand_bsi (&bsi, call, true, NULL_TREE, true, BSI_SAME_STMT);
   bsi_remove (&bsi, true);
 
index 6ac4232c026e9d83cf6ea29933afa8d71ac1105f..1114de11d77aaec6e3c082d58957a22a94580fc9 100644 (file)
@@ -1,3 +1,8 @@
+2008-07-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/36877
+       * gcc.dg/gomp/atomic-11.c: New test.
+
 2008-07-19  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/36795
diff --git a/gcc/testsuite/gcc.dg/gomp/atomic-11.c b/gcc/testsuite/gcc.dg/gomp/atomic-11.c
new file mode 100644 (file)
index 0000000..397972b
--- /dev/null
@@ -0,0 +1,17 @@
+/* PR middle-end/36877 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+/* { dg-options "-fopenmp -march=i386" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
+
+int i;
+float f;
+
+void foo (void)
+{
+#pragma omp atomic
+  i++;
+#pragma omp atomic
+  f += 1.0;
+}
+
+/* { dg-final { scan-assembler-not "__sync_(fetch|add|bool|val)" { target i?86-*-* x86_64-*-* powerpc*-*-* ia64-*-* s390*-*-* sparc*-*-* } } } */