diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/rtl.def | 15 | ||||
-rw-r--r-- | gcc/rtl.h | 2 |
3 files changed, 19 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a24d9fea077..3710865a76a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Tue Nov 4 18:49:42 1997 Jeffrey A Law (law@cygnus.com) + + * rtl.def (CODE_LABEL): Use separate fields for LABEL_NUSES + and LABEL_REFS fields. + * rtl.h (LABEL_REFS): Update. + Tue Nov 4 16:55:11 1997 Jim Wilson <wilson@cygnus.com> * mips.md (insv, extzv, extv): Add change_address call. diff --git a/gcc/rtl.def b/gcc/rtl.def index ac51b6d50f7..d0627791b64 100644 --- a/gcc/rtl.def +++ b/gcc/rtl.def @@ -368,8 +368,8 @@ DEF_RTL_EXPR(BARRIER, "barrier", "iuu", 'x') 3: is a number that is unique in the entire compilation. 4: is the user-given name of the label, if any. 5: is used in jump.c for the use-count of the label. - and in flow.c to point to the chain of label_ref's to this label. */ -DEF_RTL_EXPR(CODE_LABEL, "code_label", "iuuis0", 'x') + 6: is used in flow.c to point to the chain of label_ref's to this label. */ +DEF_RTL_EXPR(CODE_LABEL, "code_label", "iuuis00", 'x') /* Say where in the code a source line starts, for symbol table's sake. Contains a filename and a line number. Line numbers <= 0 are special: @@ -385,7 +385,7 @@ DEF_RTL_EXPR(NOTE, "note", "iuusn", 'x') it contains helps to build the mapping function between the rtx's of the function to be inlined and the current function being expanded. */ -DEF_RTL_EXPR(INLINE_HEADER, "inline_header", "iuuuiiiiiieeiiEeEss", 'x') +DEF_RTL_EXPR(INLINE_HEADER, "inline_header", "iuuuiiiiiieeiiEeEsse", 'x') /* ---------------------------------------------------------------------- Top level constituents of INSN, JUMP_INSN and CALL_INSN. @@ -571,6 +571,15 @@ DEF_RTL_EXPR(SYMBOL_REF, "symbol_ref", "s", 'o') pretend to be looking at the entire value and comparing it. */ DEF_RTL_EXPR(CC0, "cc0", "", 'o') +/* Reference to the address of a register. Removed by purge_addressof after + CSE has elided as many as possible. + 1st operand: the register we may need the address of. + 2nd operand: the original pseudo regno we were generated for. + 3rd operand: the decl for the object in the register, for + put_reg_in_stack. */ + +DEF_RTL_EXPR(ADDRESSOF, "addressof", "ei0", 'o') + /* ===================================================================== A QUEUED expression really points to a member of the queue of instructions to be output later for postincrement/postdecrement. diff --git a/gcc/rtl.h b/gcc/rtl.h index 16de2806d03..9f9abda2962 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -464,7 +464,7 @@ extern char *note_insn_name[]; each CODE_LABEL starts a chain that goes through all the LABEL_REFs that jump to that label. The chain eventually winds up at the CODE_LABEL; it is circular. */ -#define LABEL_REFS(LABEL) ((LABEL)->fld[5].rtx) +#define LABEL_REFS(LABEL) ((LABEL)->fld[6].rtx) /* This is the field in the LABEL_REF through which the circular chain of references to a particular label is linked. |