OSDN Git Service

* trans-mem.c (ipa_tm_transform_calls_redirect): Do not remove
authoraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 11 Dec 2011 14:02:52 +0000 (14:02 +0000)
committeraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 11 Dec 2011 14:02:52 +0000 (14:02 +0000)
        edge.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182205 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/g++.dg/tm/cgraph_edge.C [new file with mode: 0644]
gcc/trans-mem.c

index b1cc087..26df948 100644 (file)
@@ -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 (file)
index 0000000..d4c8f77
--- /dev/null
@@ -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);
+      }
+  }
+
index 9751a15..c32aee6 100644 (file)
@@ -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;
        }