cfg.c (free_edge): Break out from ....
authorJan Hubicka <jh@suse.cz>
Tue, 16 Oct 2001 22:24:16 +0000 (00:24 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 16 Oct 2001 22:24:16 +0000 (22:24 +0000)
* cfg.c (free_edge): Break out from ....
(remove_edge): ... here.
(clear_edges): Use free_edge.

* att.h (ASM_QUAD): Add comment.
* bsd.h, sco5.h, sun386.h (ASM_QUAD): Define.

From-SVN: r46297

gcc/ChangeLog
gcc/cfg.c
gcc/config/i386/att.h
gcc/config/i386/bsd.h
gcc/config/i386/sco5.h
gcc/config/i386/sun386.h

index de74d35399e33dfc5e43b6a6f6bed172874445b8..cbf0c5d07aec097b44a579fc65e2d6a49efb9008 100644 (file)
@@ -1,3 +1,12 @@
+Wed Oct 17 00:21:31 CEST 2001  Jan Hubicka  <jh@suse.cz>
+
+       * cfg.c (free_edge): Break out from ....
+       (remove_edge): ... here.
+       (clear_edges): Use free_edge.
+
+       * att.h (ASM_QUAD): Add comment.
+       * bsd.h, sco5.h, sun386.h (ASM_QUAD): Define.
+
 Wed Oct 17 00:01:02 CEST 2001  Jan Hubicka  <jh@suse.cz>
 
        * i386.c (split_ti): New function.
index d8d8c992b7d678c645cbdda1746a5c12b1bcd90a..a72067342f22fd4ffc7f659e7fb8eb99ff214751 100644 (file)
--- a/gcc/cfg.c
+++ b/gcc/cfg.c
@@ -117,6 +117,7 @@ struct basic_block_def entry_exit_blocks[2]
 };
 
 void debug_flow_info                   PARAMS ((void));
+static void free_edge                  PARAMS ((edge));
 \f
 /* Called once at intialization time.  */
 
@@ -142,23 +143,53 @@ init_flow ()
     }
 }
 \f
+/* Helper function for remove_edge and clear_edges.  Frees edge structure
+   without actually unlinking it from the pred/succ lists.  */
+
+static void
+free_edge (e)
+     edge e;
+{
+  n_edges--;
+  memset (e, 0, sizeof (*e));
+  e->succ_next = first_deleted_edge;
+  first_deleted_edge = e;
+}
+
 /* Free the memory associated with the edge structures.  */
 
 void
 clear_edges ()
 {
   int i;
+  edge e;
 
   for (i = 0; i < n_basic_blocks; ++i)
     {
       basic_block bb = BASIC_BLOCK (i);
+      edge e = bb->succ;
 
-      while (bb->succ)
-       remove_edge (bb->succ);
+      while (e)
+       {
+         edge next = e->succ_next;
+
+         free_edge (e);
+         e = next;
+       }
+      bb->succ = NULL;
+      bb->pred = NULL;
     }
 
-  while (ENTRY_BLOCK_PTR->succ)
-    remove_edge (ENTRY_BLOCK_PTR->succ);
+  e = ENTRY_BLOCK_PTR->succ;
+  while (e)
+    {
+      edge next = e->succ_next;
+
+      free_edge (e);
+      e = next;
+    }
+  EXIT_BLOCK_PTR->pred = NULL;
+  ENTRY_BLOCK_PTR->succ = NULL;
 
   if (n_edges)
     abort ();
@@ -335,10 +366,7 @@ remove_edge (e)
   else
     dest->pred = e->pred_next;
 
-  n_edges--;
-  memset (e, 0, sizeof (*e));
-  e->succ_next = first_deleted_edge;
-  first_deleted_edge = e;
+  free_edge (e);
 }
 
 /* Redirect an edge's successor from one block to another.  */
index 8f2a1ebb50d5c1033b1fdcb82780cadafd9d5d59..7e8f7b57c5f4e98f9e4081cffe5188ec7c95d716 100644 (file)
@@ -32,7 +32,7 @@ Boston, MA 02111-1307, USA.  */
 
 #define ASM_SHORT "\t.value\t"
 #define ASM_LONG "\t.long\t"
-#define ASM_QUAD "\t.quad\t"
+#define ASM_QUAD "\t.quad\t"  /* Should not be used for 32bit compilation.  */
 
 /* How to output an ASCII string constant.  */
 
index 82b141130f97d04c51870fd05888a18669386423..cf1b35b65d9abb4f8ccee74f9bb65fd79feb41e6 100644 (file)
@@ -43,6 +43,7 @@ Boston, MA 02111-1307, USA.  */
 #define ASM_BYTE_OP "\t.byte\t"
 #define ASM_SHORT "\t.word\t"
 #define ASM_LONG "\t.long\t"
+#define ASM_QUAD "\t.quad\t"  /* Should not be used for 32bit compilation.  */
 
 /* Output at beginning of assembler file.
    ??? I am skeptical of this -- RMS.  */
index 56bc2879e6c753931f3b1d89fcc22827ee2fbd94..16d5fcf2a45ca153ba01201a040f16bb3145cf36 100644 (file)
@@ -59,6 +59,9 @@ Boston, MA 02111-1307, USA.  */
 #undef ASM_LONG
 #define ASM_LONG                       "\t.long\t"
 
+#undef ASM_QUAD
+#define ASM_QUAD "\t.quad\t"  /* Should not be used for 32bit compilation.  */
+
 #undef TYPE_ASM_OP
 #define TYPE_ASM_OP                    "\t.type\t"
 
index b28f20fd01a69078710081d170d385a969a9e5dc..8cc722710eb1787ab4d0461938d13b9aacdc1ea8 100644 (file)
@@ -36,6 +36,8 @@ Boston, MA 02111-1307, USA.  */
 #define ASM_BYTE_OP "\t.byte\t"
 #define ASM_SHORT "\t.value\t"
 #define ASM_LONG "\t.long\t"
+#define ASM_QUAD "\t.quad\t"  /* Should not be used for 32bit compilation.  */
+
 
 /* How to output an ASCII string constant.  */