As discussed earlier, I have moved the flag_tm check inside of block_in_transaction.

Committed to trunk.
        * tree-ssa-loop-im.c (execute_sm): Do not check flag_tm.
        * gimple.h (block_in_transaction): Check for flag_tm.

Index: tree-ssa-loop-im.c
===================================================================
--- tree-ssa-loop-im.c  (revision 188081)
+++ tree-ssa-loop-im.c  (working copy)
@@ -2154,7 +2154,7 @@ execute_sm (struct loop *loop, VEC (edge
   fmt_data.orig_loop = loop;
   for_each_index (&ref->mem, force_move_till, &fmt_data);
 
-  if ((flag_tm && block_in_transaction (loop_preheader_edge (loop)->src))
+  if (block_in_transaction (loop_preheader_edge (loop)->src)
       || !PARAM_VALUE (PARAM_ALLOW_STORE_DATA_RACES))
     multi_threaded_model_p = true;
 
Index: gimple.h
===================================================================
--- gimple.h    (revision 188081)
+++ gimple.h    (working copy)
@@ -1593,7 +1593,7 @@ gimple_set_has_volatile_ops (gimple stmt
 static inline bool
 block_in_transaction (basic_block bb)
 {
-  return bb->flags & BB_IN_TRANSACTION;
+  return flag_tm && bb->flags & BB_IN_TRANSACTION;
 }
 
 /* Return true if STMT is in a transaction.  */

Reply via email to