re PR middle-end/35611 (FAIL: libgomp.c/omp-nested-1.c execution test)
PR middle-end/35611 * gimplify.c (gimplify_expr): Gimplify second operand of OMP_ATOMIC_LOAD. * testsuite/libgomp.c/atomic-4.c: New test. From-SVN: r133309
This commit is contained in:
parent
9e7759638a
commit
8119fc9307
4 changed files with 36 additions and 3 deletions
|
@ -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>
|
2008-03-17 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/19637
|
PR tree-optimization/19637
|
||||||
|
|
|
@ -6022,12 +6022,18 @@ gimplify_expr (tree *expr_p, tree *pre_p, tree *post_p,
|
||||||
|
|
||||||
case OMP_RETURN:
|
case OMP_RETURN:
|
||||||
case OMP_CONTINUE:
|
case OMP_CONTINUE:
|
||||||
case OMP_ATOMIC_LOAD:
|
case OMP_ATOMIC_STORE:
|
||||||
case OMP_ATOMIC_STORE:
|
|
||||||
|
|
||||||
ret = GS_ALL_DONE;
|
ret = GS_ALL_DONE;
|
||||||
break;
|
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:
|
case POINTER_PLUS_EXPR:
|
||||||
/* Convert ((type *)A)+offset into &A->field_of_type_and_offset.
|
/* Convert ((type *)A)+offset into &A->field_of_type_and_offset.
|
||||||
The second is gimple immediate saving a need for extra statement.
|
The second is gimple immediate saving a need for extra statement.
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
2008-03-18 Jakub Jelinek <jakub@redhat.com>
|
2008-03-18 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR middle-end/35611
|
||||||
|
* testsuite/libgomp.c/atomic-4.c: New test.
|
||||||
|
|
||||||
PR libgomp/35625
|
PR libgomp/35625
|
||||||
* iter.c (gomp_iter_guided_next_locked): If q > n, set end to ws->end.
|
* iter.c (gomp_iter_guided_next_locked): If q > n, set end to ws->end.
|
||||||
(gomp_iter_guided_next): Likewise.
|
(gomp_iter_guided_next): Likewise.
|
||||||
|
|
18
libgomp/testsuite/libgomp.c/atomic-4.c
Normal file
18
libgomp/testsuite/libgomp.c/atomic-4.c
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/* PR middle-end/35611 */
|
||||||
|
/* { dg-options "-O2" } */
|
||||||
|
|
||||||
|
extern void abort (void);
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
long double d = .0L;
|
||||||
|
int i;
|
||||||
|
#pragma omp parallel for shared (d)
|
||||||
|
for (i = 0; i < 1000; i++)
|
||||||
|
#pragma omp atomic
|
||||||
|
d += 1.0L;
|
||||||
|
if (d != 1000.0L)
|
||||||
|
abort ();
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue