summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2008-03-18 12:21:02 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2008-03-18 12:21:02 +0000
commit0c378ed95e3993e9fc0bd7a09bd4bec7e92297f7 (patch)
treecefe0df94ad8e0d6712d5f82009935b5d05d0634 /gcc
parent5205ccb0520a21ad8aae863b91e3d623621490c5 (diff)
downloadppe42-gcc-0c378ed95e3993e9fc0bd7a09bd4bec7e92297f7.tar.gz
ppe42-gcc-0c378ed95e3993e9fc0bd7a09bd4bec7e92297f7.zip
PR middle-end/35611
* gimplify.c (gimplify_expr): Gimplify second operand of OMP_ATOMIC_LOAD. * testsuite/libgomp.c/atomic-4.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@133309 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimplify.c12
2 files changed, 15 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 28309279b79..e5706fb97be 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-03-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/35611
+ * gimplify.c (gimplify_expr): Gimplify second operand of
+ OMP_ATOMIC_LOAD.
+
2008-03-17 Richard Guenther <rguenther@suse.de>
PR tree-optimization/19637
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index a75c711384f..102ce3e7354 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -6022,12 +6022,18 @@ gimplify_expr (tree *expr_p, tree *pre_p, tree *post_p,
case OMP_RETURN:
case OMP_CONTINUE:
- case OMP_ATOMIC_LOAD:
- case OMP_ATOMIC_STORE:
-
+ case OMP_ATOMIC_STORE:
ret = GS_ALL_DONE;
break;
+ case OMP_ATOMIC_LOAD:
+ if (gimplify_expr (&TREE_OPERAND (*expr_p, 1), pre_p, NULL,
+ is_gimple_val, fb_rvalue) != GS_ALL_DONE)
+ ret = GS_ERROR;
+ else
+ ret = GS_ALL_DONE;
+ break;
+
case POINTER_PLUS_EXPR:
/* Convert ((type *)A)+offset into &A->field_of_type_and_offset.
The second is gimple immediate saving a need for extra statement.
OpenPOWER on IntegriCloud