aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/omp-low.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/gomp/atomic-11.c17
4 files changed, 29 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 392ba58..701b25f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 2f9aede..8ee717a 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -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);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6ac4232..1114de1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..397972b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/atomic-11.c
@@ -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*-*-* } } } */