]> gcc.gnu.org Git - gcc.git/commitdiff
re PR middle-end/51211 (ICE: SIGSEGV in execute_tm_mark (trans-mem.c:2242) with ...
authorPatrick Marlier <patrick.marlier@gmail.com>
Sat, 19 Nov 2011 19:29:18 +0000 (19:29 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Sat, 19 Nov 2011 19:29:18 +0000 (11:29 -0800)
PR middle-end/51211
        * tracer.c (ignore_bb_p): Don't copy GIMPLE_TRANSACTION.

From-SVN: r181512

gcc/ChangeLog
gcc/tracer.c

index 69c633728f03fb6f1c992966bfe577432f5be3b9..eb4e2122b935563ae917ff17e3c818c0c482d897 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 d3523b985b1ca4a01c7ee59c068ba1c2e930e47e..602e7580d994c4f24be7e5f33e65c70d9541f729 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;
 }
 
This page took 0.100225 seconds and 5 git commands to generate.