aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-08-30 19:16:29 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2010-08-30 19:16:29 +0200
commitf2b11865fe81940d2061a924c3428a7915897fe9 (patch)
tree266d290f0a93cf7641282147388454e9d5f59918 /gcc/gimplify.c
parentbd9c7fb90927f0f22e6bbbb5f809bb8e5f6eaa95 (diff)
downloadgcc-f2b11865fe81940d2061a924c3428a7915897fe9.zip
gcc-f2b11865fe81940d2061a924c3428a7915897fe9.tar.gz
gcc-f2b11865fe81940d2061a924c3428a7915897fe9.tar.bz2
re PR middle-end/45423 (#pragma omp atomic on bool has issues)
PR middle-end/45423 * gimplify.c (goa_stabilize_expr): Handle TRUTH_NOT_EXPR and TRUTH_{AND,OR,XOR}_EXPR. * c-parser.c (c_parser_omp_atomic): Handle boolean {PRE,POST}_{INC,DEC}REMENT. cp/ * parser.c (cp_parser_omp_atomic): Handle boolean {PRE,POST}_INCREMENT. testsuite/ * gcc.dg/gomp/atomic-12.c: New test. * gcc.dg/gomp/atomic-13.c: New test. * gcc.dg/gomp/atomic-14.c: New test. * g++.dg/gomp/atomic-11.C: New test. * g++.dg/gomp/atomic-12.C: New test. * g++.dg/gomp/atomic-13.C: New test. * g++.dg/gomp/atomic-14.C: New test. From-SVN: r163653
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 32d07f0..897fe13 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -6405,8 +6405,12 @@ goa_stabilize_expr (tree *expr_p, gimple_seq *pre_p, tree lhs_addr,
{
case TRUTH_ANDIF_EXPR:
case TRUTH_ORIF_EXPR:
+ case TRUTH_AND_EXPR:
+ case TRUTH_OR_EXPR:
+ case TRUTH_XOR_EXPR:
saw_lhs |= goa_stabilize_expr (&TREE_OPERAND (expr, 1), pre_p,
lhs_addr, lhs_var);
+ case TRUTH_NOT_EXPR:
saw_lhs |= goa_stabilize_expr (&TREE_OPERAND (expr, 0), pre_p,
lhs_addr, lhs_var);
break;