aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ggc-page.c7
-rw-r--r--gcc/rtl.def20
3 files changed, 23 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 145f869..709fbf5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2002-08-14 Richard Henderson <rth@redhat.com>
+ * ggc-page.c (RTL_SIZE): New.
+ (extra_order_size_table): Add specializations for 2 and 10 rtl slots.
+ * rtl.def (BARRIER, NOTE): Pad to 9 slots.
+
+2002-08-14 Richard Henderson <rth@redhat.com>
+
* calls.c: Include target.h.
* Makefile.in (calls.o): Update.
diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c
index 0f59153..9a5644a 100644
--- a/gcc/ggc-page.c
+++ b/gcc/ggc-page.c
@@ -163,13 +163,18 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#define NUM_EXTRA_ORDERS ARRAY_SIZE (extra_order_size_table)
+#define RTL_SIZE(NSLOTS) \
+ (sizeof (struct rtx_def) + ((NSLOTS) - 1) * sizeof (rtunion))
+
/* The Ith entry is the maximum size of an object to be stored in the
Ith extra order. Adding a new entry to this array is the *only*
thing you need to do to add a new special allocation size. */
static const size_t extra_order_size_table[] = {
sizeof (struct tree_decl),
- sizeof (struct tree_list)
+ sizeof (struct tree_list),
+ RTL_SIZE (2), /* REG, MEM, PLUS, etc. */
+ RTL_SIZE (10), /* INSN, CALL_INSN, JUMP_INSN */
};
/* The total number of orders. */
diff --git a/gcc/rtl.def b/gcc/rtl.def
index 2934188..5608676 100644
--- a/gcc/rtl.def
+++ b/gcc/rtl.def
@@ -566,22 +566,24 @@ DEF_RTL_EXPR(JUMP_INSN, "jump_insn", "iuuBteiee0", 'i')
DEF_RTL_EXPR(CALL_INSN, "call_insn", "iuuBteieee", 'i')
/* A marker that indicates that control will not flow through. */
-DEF_RTL_EXPR(BARRIER, "barrier", "iuu", 'x')
+DEF_RTL_EXPR(BARRIER, "barrier", "iuu000000", 'x')
/* Holds a label that is followed by instructions.
Operand:
- 4: is used in jump.c for the use-count of the label.
- 5: is used in flow.c to point to the chain of label_ref's to this label.
- 6: is a number that is unique in the entire compilation.
- 7: is the user-given name of the label, if any. */
+ 5: is used in jump.c for the use-count of the label.
+ 6: is used in flow.c to point to the chain of label_ref's to this label.
+ 7: is a number that is unique in the entire compilation.
+ 8: is the user-given name of the label, if any. */
DEF_RTL_EXPR(CODE_LABEL, "code_label", "iuuB00is", 'x')
/* Say where in the code a source line starts, for symbol table's sake.
Operand:
- 4: filename, if line number > 0, note-specific data otherwise.
- 5: line number if > 0, enum note_insn otherwise.
- 6: unique number if line number == note_insn_deleted_label. */
-DEF_RTL_EXPR(NOTE, "note", "iuuB0ni", 'x')
+ 5: filename, if line number > 0, note-specific data otherwise.
+ 6: line number if > 0, enum note_insn otherwise.
+ 7: unique number if line number == note_insn_deleted_label.
+ 8-9: padding so that notes and insns are the same size, and thus
+ allocated from the same page ordering. */
+DEF_RTL_EXPR(NOTE, "note", "iuuB0ni00", 'x')
/* ----------------------------------------------------------------------
Top level constituents of INSN, JUMP_INSN and CALL_INSN.