OSDN Git Service

PR middle-end/51211
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Nov 2011 19:29:18 +0000 (19:29 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Nov 2011 19:29:18 +0000 (19:29 +0000)
        * tracer.c (ignore_bb_p): Don't copy GIMPLE_TRANSACTION.

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

gcc/ChangeLog
gcc/tracer.c

index 69c6337..eb4e212 100644 (file)
@@ -1,3 +1,8 @@
+2011-11-19  Patrick Marlier  <patrick.marlier@gmail.com>
+
+       PR middle-end/51211
+       * tracer.c (ignore_bb_p): Don't copy GIMPLE_TRANSACTION.
+
 2011-11-19  Eric Botcazou  <ebotcazou@adacore.com>
 
        * expmed.c (store_bit_field_1): Revert bogus formatting change.
index d3523b9..602e758 100644 (file)
@@ -90,10 +90,19 @@ bb_seen_p (basic_block bb)
 static bool
 ignore_bb_p (const_basic_block bb)
 {
+  gimple g;
+
   if (bb->index < NUM_FIXED_BLOCKS)
     return true;
   if (optimize_bb_for_size_p (bb))
     return true;
+
+  /* A transaction is a single entry multiple exit region.  It must be
+     duplicated in its entirety or not at all.  */
+  g = last_stmt (CONST_CAST_BB (bb));
+  if (g && gimple_code (g) == GIMPLE_TRANSACTION)
+    return true;
+
   return false;
 }