diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2013-02-26 12:40:27 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2013-02-26 12:40:27 +0000 |
commit | 6f2d959b9e7774bf79e3e8fb33143e2d980691c4 (patch) | |
tree | a130cd504c572cd0ea68502caca8947915824b5a /gcc | |
parent | f1ad33546dc659604fd842520a9b4600cb966c75 (diff) | |
download | gcc-6f2d959b9e7774bf79e3e8fb33143e2d980691c4.zip gcc-6f2d959b9e7774bf79e3e8fb33143e2d980691c4.tar.gz gcc-6f2d959b9e7774bf79e3e8fb33143e2d980691c4.tar.bz2 |
re PR c++/56419 (transactions in for-loops disappear)
PR c++/56419
* semantics.c (begin_transaction_stmt): Set TREE_SIDE_EFFECTS.
(build_transaction_expr): Same.
From-SVN: r196282
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tm/pr56419.C | 13 |
3 files changed, 21 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c2a2b3c..7ab31f3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-02-25 Aldy Hernandez <aldyh@redhat.com> + + PR c++/56419 + * semantics.c (begin_transaction_stmt): Set TREE_SIDE_EFFECTS. + (build_transaction_expr): Same. + 2013-02-25 Jason Merrill <jason@redhat.com> PR c++/56377 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 60271b5..9446f83 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -5108,6 +5108,7 @@ begin_transaction_stmt (location_t loc, tree *pcompound, int flags) "transactional memory support enabled"))); TRANSACTION_EXPR_BODY (r) = push_stmt_list (); + TREE_SIDE_EFFECTS (r) = 1; return r; } @@ -5157,6 +5158,7 @@ build_transaction_expr (location_t loc, tree expr, int flags, tree noex) ret = build1 (TRANSACTION_EXPR, TREE_TYPE (expr), expr); if (flags & TM_STMT_ATTR_RELAXED) TRANSACTION_EXPR_RELAXED (ret) = 1; + TREE_SIDE_EFFECTS (ret) = 1; SET_EXPR_LOCATION (ret, loc); return ret; } diff --git a/gcc/testsuite/g++.dg/tm/pr56419.C b/gcc/testsuite/g++.dg/tm/pr56419.C new file mode 100644 index 0000000..c9a33a8 --- /dev/null +++ b/gcc/testsuite/g++.dg/tm/pr56419.C @@ -0,0 +1,13 @@ +// { dg-do compile } +// { dg-options "-fgnu-tm" } + +int x = 0; +int inc_func(int i) { + for (int j = 0; j < i; ++j) + { + __transaction_atomic { x+=1; } + } + return 0; +} + +// { dg-final { scan-assembler "ITM_commitTransaction" } } |