diff options
author | Patrick Marlier <patrick.marlier@gmail.com> | 2011-12-11 14:02:52 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2011-12-11 14:02:52 +0000 |
commit | 716286f40a7c85dfaf34826861fc5d321e843072 (patch) | |
tree | 33bab8d6ed043fc2071e6efda727f9077c3dabd0 /gcc | |
parent | 8d2c862dfe1a28c9c5aacde1e3f9fd3d8d38a76f (diff) | |
download | gcc-716286f40a7c85dfaf34826861fc5d321e843072.zip gcc-716286f40a7c85dfaf34826861fc5d321e843072.tar.gz gcc-716286f40a7c85dfaf34826861fc5d321e843072.tar.bz2 |
trans-mem.c (ipa_tm_transform_calls_redirect): Do not remove edge.
* trans-mem.c (ipa_tm_transform_calls_redirect): Do not remove
edge.
From-SVN: r182205
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tm/cgraph_edge.C | 33 | ||||
-rw-r--r-- | gcc/trans-mem.c | 1 |
3 files changed, 38 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b1cc087..26df948 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-12-11 Patrick Marlier <patrick.marlier@gmail.com> + + * trans-mem.c (ipa_tm_transform_calls_redirect): Do not remove + edge. + 2011-12-10 Richard Henderson <rth@redhat.com> * config/rs6000/altivec.md (altivec_vmrghb): Rewrite pattern as diff --git a/gcc/testsuite/g++.dg/tm/cgraph_edge.C b/gcc/testsuite/g++.dg/tm/cgraph_edge.C new file mode 100644 index 0000000..d4c8f77 --- /dev/null +++ b/gcc/testsuite/g++.dg/tm/cgraph_edge.C @@ -0,0 +1,33 @@ +// { dg-do compile } +// { dg-options "-fgnu-tm -O3" } + +template<typename _InputIterator, typename _Distance> inline void advance(_InputIterator& __i, _Distance __n) + { + if (__n > 0) + while (__n--) + --__i; + else + --__i; + } + +void _Rb_tree_increment (); + +template<typename _Tp> struct _Rb_tree_iterator + { + typedef _Rb_tree_iterator<_Tp> iterator; + + iterator& operator--() + { + _Rb_tree_increment(); + } + }; + +void update () + { + _Rb_tree_iterator<int>::iterator it; + __transaction_relaxed + { + advance (it, 0); + } + } + diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c index 9751a15..c32aee6 100644 --- a/gcc/trans-mem.c +++ b/gcc/trans-mem.c @@ -4481,7 +4481,6 @@ ipa_tm_transform_calls_redirect (struct cgraph_node *node, { *need_ssa_rename_p |= ipa_tm_insert_gettmclone_call (node, region, gsi, stmt); - cgraph_remove_edge (e); return; } |