OSDN Git Service

Daily bump.
[pf3gnuchains/gcc-fork.git] / gcc / tracer.c
index fab2f49..602e758 100644 (file)
@@ -1,7 +1,7 @@
 /* The tracer pass for the GNU compiler.
    Contributed by Jan Hubicka, SuSE Labs.
    Adapted to work on GIMPLE instead of RTL by Robert Kidd, UIUC.
-   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
    Free Software Foundation, Inc.
 
    This file is part of GCC.
@@ -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 (!maybe_hot_bb_p (bb))
+  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;
 }
 
@@ -306,7 +315,7 @@ tail_duplicate (void)
              nduplicated += counts [bb2->index];
 
              e = find_edge (bb, bb2);
-             
+
              copy = duplicate_block (bb2, e, bb);
              flush_pending_stmts (e);
 
@@ -393,8 +402,7 @@ struct gimple_opt_pass pass_tracer =
   0,                                    /* properties_provided */
   0,                                    /* properties_destroyed */
   0,                                    /* todo_flags_start */
-  TODO_dump_func
-    | TODO_update_ssa
+  TODO_update_ssa
     | TODO_verify_ssa                   /* todo_flags_finish */
  }
 };