summaryrefslogtreecommitdiff
path: root/gcc/tracer.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tracer.c')
-rw-r--r--gcc/tracer.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/tracer.c b/gcc/tracer.c
index d3523b985b1..602e7580d99 100644
--- a/gcc/tracer.c
+++ b/gcc/tracer.c
@@ -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;
}