diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-03-18 12:21:02 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-03-18 12:21:02 +0000 |
commit | 0c378ed95e3993e9fc0bd7a09bd4bec7e92297f7 (patch) | |
tree | cefe0df94ad8e0d6712d5f82009935b5d05d0634 /gcc | |
parent | 5205ccb0520a21ad8aae863b91e3d623621490c5 (diff) | |
download | ppe42-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/gimplify.c | 12 |
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. |