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. */