gimple.h (gimple_set_in_transaction): Remove.
authorAldy Hernandez <aldyh@redhat.com>
Mon, 21 May 2012 18:02:17 +0000 (18:02 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Mon, 21 May 2012 18:02:17 +0000 (18:02 +0000)
        * gimple.h (gimple_set_in_transaction): Remove.
        (gimple_in_transaction): Look in BB instead.
        (gimple_statement_base): Remove in_transaction field.
        * basic-block.h (enum bb_flags): Add BB_IN_TRANSACTION.
        * trans-mem.c (compute_transaction_bits): Place transaction bit
        information into basic blocks.

From-SVN: r187729

gcc/ChangeLog
gcc/basic-block.h
gcc/gimple.h
gcc/trans-mem.c

index e2f8892a1809686c3f06268a4d62c68b3c108742..251d5ef8dcc9b9bee817eb9690add63983676ac4 100644 (file)
@@ -1,3 +1,12 @@
+2012-05-21  Aldy Hernandez  <aldyh@redhat.com>
+
+       * gimple.h (gimple_set_in_transaction): Remove.
+       (gimple_in_transaction): Look in BB instead.
+       (gimple_statement_base): Remove in_transaction field.
+       * basic-block.h (enum bb_flags): Add BB_IN_TRANSACTION.
+       * trans-mem.c (compute_transaction_bits): Place transaction bit
+       information into basic blocks.
+
 2012-05-21  Andreas Schwab  <schwab@linux-m68k.org>
 
        * expr.c (get_def_for_expr_class): Define only if
index f0eeba7a7d3ef0b04d8d07c6f30a8c91baf6cd43..3aa3a78a7d8863cf85b2ec1ae61fca42eb84a043 100644 (file)
@@ -263,7 +263,12 @@ enum bb_flags
   BB_MODIFIED = 1 << 12,
 
   /* A general visited flag for passes to use.  */
-  BB_VISITED = 1 << 13
+  BB_VISITED = 1 << 13,
+
+  /* Set on blocks that are in a transaction.  This is calculated on
+     demand, and is available after calling
+     compute_transaction_bits().  */
+  BB_IN_TRANSACTION = 1 << 14
 };
 
 /* Dummy flag for convenience in the hot/cold partitioning code.  */
index aefccaaeab7c301560a8863ba0e2799130a5f3bb..523619204bcd95e3732703f62f80909cf08b1e82 100644 (file)
@@ -179,11 +179,6 @@ struct GTY(()) gimple_statement_base {
   /* Nonzero if this statement contains volatile operands.  */
   unsigned has_volatile_ops    : 1;
 
-  /* Nonzero if this statement appears inside a transaction.  This bit
-     is calculated on de-mand and has relevant information only after
-     it has been calculated with compute_transaction_bits.  */
-  unsigned in_transaction      : 1;
-
   /* The SUBCODE field can be used for tuple-specific flags for tuples
      that do not require subcodes.  Note that SUBCODE should be at
      least as wide as tree codes, as several tuples store tree codes
@@ -1598,15 +1593,7 @@ gimple_set_has_volatile_ops (gimple stmt, bool volatilep)
 static inline bool
 gimple_in_transaction (gimple stmt)
 {
-  return stmt->gsbase.in_transaction;
-}
-
-/* Set the IN_TRANSACTION flag to TRANSACTIONP.  */
-
-static inline void
-gimple_set_in_transaction (gimple stmt, bool transactionp)
-{
-  stmt->gsbase.in_transaction = (unsigned) transactionp;
+  return gimple_bb (stmt)->flags & BB_IN_TRANSACTION;
 }
 
 /* Return true if statement STMT may access memory.  */
index 51dd7fe13eda5dd53ce1d32f9a1d712408681a29..8887b9afee6688b20cb6f7469d2d77602a7fe8ca 100644 (file)
@@ -2451,13 +2451,15 @@ compute_transaction_bits (void)
   struct tm_region *region;
   VEC (basic_block, heap) *queue;
   unsigned int i;
-  gimple_stmt_iterator gsi;
   basic_block bb;
 
   /* ?? Perhaps we need to abstract gate_tm_init further, because we
      certainly don't need it to calculate CDI_DOMINATOR info.  */
   gate_tm_init ();
 
+  FOR_EACH_BB (bb)
+    bb->flags &= ~BB_IN_TRANSACTION;
+
   for (region = all_tm_regions; region; region = region->next)
     {
       queue = get_tm_region_blocks (region->entry_block,
@@ -2466,11 +2468,7 @@ compute_transaction_bits (void)
                                    NULL,
                                    /*stop_at_irr_p=*/true);
       for (i = 0; VEC_iterate (basic_block, queue, i, bb); ++i)
-       for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
-         {
-           gimple stmt = gsi_stmt (gsi);
-           gimple_set_in_transaction (stmt, true);
-         }
+       bb->flags |= BB_IN_TRANSACTION;
       VEC_free (basic_block, heap, queue);
     }