OSDN Git Service

Daily bump.
[pf3gnuchains/gcc-fork.git] / gcc / basic-block.h
index 4e3a7af..a946405 100644 (file)
@@ -1,5 +1,5 @@
 /* Define control and data flow tables, and regsets.
-   Copyright (C) 1987, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1987, 1997, 1998 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -132,7 +132,7 @@ extern regset regs_live_at_setjmp;
 #define REG_BLOCK_UNKNOWN -1
 #define REG_BLOCK_GLOBAL -2
 
-#define REG_BASIC_BLOCK(N) (reg_n_info[(N)].basic_block)
+#define REG_BASIC_BLOCK(N) (VARRAY_REG (reg_n_info, N)->basic_block)
 
 /* List of integers.
    These are used for storing things like predecessors, etc.
@@ -190,7 +190,8 @@ extern int *uid_block_number;
 
 extern void compute_preds_succs PROTO ((int_list_ptr *, int_list_ptr *,
                                        int *, int *));
-extern void dump_bb_data       PROTO ((FILE *, int_list_ptr *, int_list_ptr *));
+extern void dump_bb_data       PROTO ((FILE *, int_list_ptr *, int_list_ptr *,
+                                      int));
 extern void free_bb_mem        PROTO ((void));
 extern void free_basic_block_vars      PROTO ((int));
 
@@ -235,7 +236,41 @@ do { \
   (bitmap)->elms [(bitno) / SBITMAP_ELT_BITS] &= ~((SBITMAP_ELT_TYPE) 1 << (bitno) % SBITMAP_ELT_BITS); \
 } while (0)
 
-extern void dump_sbitmap       PROTO ((FILE *, sbitmap));
+/* Loop over all elements of SBITSET, starting with MIN.  */
+#define EXECUTE_IF_SET_IN_SBITMAP(SBITMAP, MIN, N, CODE)               \
+do {                                                                   \
+  unsigned int bit_num_ = (MIN) % (unsigned) SBITMAP_ELT_BITS;         \
+  unsigned int word_num_ = (MIN) / (unsigned) SBITMAP_ELT_BITS;                \
+  unsigned int size_ = (SBITMAP)->size;                                        \
+  SBITMAP_ELT_TYPE *ptr_ = (SBITMAP)->elms;                            \
+                                                                       \
+  while (word_num_ < size_)                                            \
+    {                                                                  \
+      SBITMAP_ELT_TYPE word_ = ptr_[word_num_];                                \
+      if (word_ != 0)                                                  \
+       {                                                               \
+         for (; bit_num_ < SBITMAP_ELT_BITS; ++bit_num_)               \
+           {                                                           \
+             SBITMAP_ELT_TYPE mask_ = (SBITMAP_ELT_TYPE)1 << bit_num_; \
+             if ((word_ & mask_) != 0)                                 \
+               {                                                       \
+                 word_ &= ~mask_;                                      \
+                 (N) = word_num_ * SBITMAP_ELT_BITS + bit_num_;        \
+                 CODE;                                                 \
+                 if (word_ == 0)                                       \
+                   break;                                              \
+               }                                                       \
+           }                                                           \
+       }                                                               \
+      bit_num_ = 0;                                                    \
+      word_num_++;                                                     \
+   }                                                                   \
+} while (0)
+
+#define sbitmap_free(map)              free(map)
+#define sbitmap_vector_free(vec)       free(vec)
+
+extern void dump_sbitmap PROTO ((FILE *, sbitmap));
 extern void dump_sbitmap_vector PROTO ((FILE *, char *, char *,
                                        sbitmap *, int));
 extern sbitmap sbitmap_alloc PROTO ((int));
@@ -264,6 +299,3 @@ extern void sbitmap_union_of_successors PROTO ((sbitmap, sbitmap *, int,
                                                int_list_ptr *));
 extern void compute_dominators PROTO ((sbitmap *, sbitmap *,
                                       int_list_ptr *, int_list_ptr *));
-
-/* In flow.c */
-extern void init_regset_vector PROTO ((regset *, int, struct obstack *));