This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

df cleanup


Hi
this saves some space in df structure as we do have BLOCK_FOR_INSN working all
the time now.

Honza

Thu Jan 17 13:35:09 CET 2002  Jan Hubicka  <jh@suse.cz>

	* df.c (df_ref_create, df_ref_record_1, df_ref_record): Kill BB argument.
	* df.h (struct ref): Kill B.
	(DF_REF_BB, DF_REF_BBNO): Use BLOCK_FOR_INSN.

Index: df.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/df.c,v
retrieving revision 1.17.2.2
diff -c -3 -p -r1.17.2.2 df.c
*** df.c	2001/11/30 20:58:23	1.17.2.2
--- df.c	2002/01/17 12:31:45
*************** static void df_refs_unlink PARAMS ((stru
*** 226,238 ****
  #endif
  
  static struct ref *df_ref_create PARAMS((struct df *,
! 					 rtx, rtx *, basic_block, rtx,
  					 enum df_ref_type, enum df_ref_flags));
  static void df_ref_record_1 PARAMS((struct df *, rtx, rtx *,
! 				    basic_block, rtx, enum df_ref_type,
  				    enum df_ref_flags));
  static void df_ref_record PARAMS((struct df *, rtx, rtx *,
! 				  basic_block bb, rtx, enum df_ref_type,
  				  enum df_ref_flags));
  static void df_def_record_1 PARAMS((struct df *, rtx, basic_block, rtx));
  static void df_defs_record PARAMS((struct df *, rtx, basic_block, rtx));
--- 226,238 ----
  #endif
  
  static struct ref *df_ref_create PARAMS((struct df *,
! 					 rtx, rtx *, rtx,
  					 enum df_ref_type, enum df_ref_flags));
  static void df_ref_record_1 PARAMS((struct df *, rtx, rtx *,
! 				    rtx, enum df_ref_type,
  				    enum df_ref_flags));
  static void df_ref_record PARAMS((struct df *, rtx, rtx *,
! 				  rtx, enum df_ref_type,
  				  enum df_ref_flags));
  static void df_def_record_1 PARAMS((struct df *, rtx, basic_block, rtx));
  static void df_defs_record PARAMS((struct df *, rtx, basic_block, rtx));
*************** df_use_unlink (df, use)
*** 794,804 ****
  /* Create a new ref of type DF_REF_TYPE for register REG at address
     LOC within INSN of BB.  */
  static struct ref *
! df_ref_create (df, reg, loc, bb, insn, ref_type, ref_flags)
       struct df *df;
       rtx reg;
       rtx *loc;
-      basic_block bb;
       rtx insn;
       enum df_ref_type ref_type;
       enum df_ref_flags ref_flags;
--- 794,803 ----
  /* Create a new ref of type DF_REF_TYPE for register REG at address
     LOC within INSN of BB.  */
  static struct ref *
! df_ref_create (df, reg, loc, insn, ref_type, ref_flags)
       struct df *df;
       rtx reg;
       rtx *loc;
       rtx insn;
       enum df_ref_type ref_type;
       enum df_ref_flags ref_flags;
*************** df_ref_create (df, reg, loc, bb, insn, r
*** 810,816 ****
  					   sizeof (*this_ref));
    DF_REF_REG (this_ref) = reg;
    DF_REF_LOC (this_ref) = loc;
-   DF_REF_BB (this_ref) = bb;
    DF_REF_INSN (this_ref) = insn;
    DF_REF_CHAIN (this_ref) = 0;
    DF_REF_TYPE (this_ref) = ref_type;
--- 809,814 ----
*************** df_ref_create (df, reg, loc, bb, insn, r
*** 848,874 ****
  /* Create a new reference of type DF_REF_TYPE for a single register REG,
     used inside the LOC rtx of INSN.  */
  static void
! df_ref_record_1 (df, reg, loc, bb, insn, ref_type, ref_flags)
       struct df *df;
       rtx reg;
       rtx *loc;
-      basic_block bb;
       rtx insn;
       enum df_ref_type ref_type;
       enum df_ref_flags ref_flags;
  {
!   df_ref_create (df, reg, loc, bb, insn, ref_type, ref_flags);
  }
  
  
  /* Create new references of type DF_REF_TYPE for each part of register REG
     at address LOC within INSN of BB.  */
  static void
! df_ref_record (df, reg, loc, bb, insn, ref_type, ref_flags)
       struct df *df;
       rtx reg;
       rtx *loc;
-      basic_block bb;
       rtx insn;
       enum df_ref_type ref_type;
       enum df_ref_flags ref_flags;
--- 846,870 ----
  /* Create a new reference of type DF_REF_TYPE for a single register REG,
     used inside the LOC rtx of INSN.  */
  static void
! df_ref_record_1 (df, reg, loc, insn, ref_type, ref_flags)
       struct df *df;
       rtx reg;
       rtx *loc;
       rtx insn;
       enum df_ref_type ref_type;
       enum df_ref_flags ref_flags;
  {
!   df_ref_create (df, reg, loc, insn, ref_type, ref_flags);
  }
  
  
  /* Create new references of type DF_REF_TYPE for each part of register REG
     at address LOC within INSN of BB.  */
  static void
! df_ref_record (df, reg, loc, insn, ref_type, ref_flags)
       struct df *df;
       rtx reg;
       rtx *loc;
       rtx insn;
       enum df_ref_type ref_type;
       enum df_ref_flags ref_flags;
*************** df_ref_record (df, reg, loc, bb, insn, r
*** 910,920 ****
  
        for (i = regno; i < endregno; i++)
  	df_ref_record_1 (df, gen_rtx_REG (reg_raw_mode[i], i),
! 			 loc, bb, insn, ref_type, ref_flags);
      }
    else
      {
!       df_ref_record_1 (df, reg, loc, bb, insn, ref_type, ref_flags);
      }
  }
  
--- 906,916 ----
  
        for (i = regno; i < endregno; i++)
  	df_ref_record_1 (df, gen_rtx_REG (reg_raw_mode[i], i),
! 			 loc, insn, ref_type, ref_flags);
      }
    else
      {
!       df_ref_record_1 (df, reg, loc, insn, ref_type, ref_flags);
      }
  }
  
*************** df_def_record_1 (df, x, bb, insn)
*** 978,984 ****
    
      if (GET_CODE (dst) == REG
          || (GET_CODE (dst) == SUBREG && GET_CODE (SUBREG_REG (dst)) == REG))
!       df_ref_record (df, dst, loc, bb, insn, DF_REF_REG_DEF, flags);
  }
  
  
--- 974,980 ----
    
      if (GET_CODE (dst) == REG
          || (GET_CODE (dst) == SUBREG && GET_CODE (SUBREG_REG (dst)) == REG))
!       df_ref_record (df, dst, loc, insn, DF_REF_REG_DEF, flags);
  }
  
  
*************** df_uses_record (df, loc, ref_type, bb, i
*** 1070,1076 ****
  
      case REG:
        /* See a register (or subreg) other than being set.  */
!       df_ref_record (df, x, loc, bb, insn, ref_type, flags);
        return;
  
      case SET:
--- 1066,1072 ----
  
      case REG:
        /* See a register (or subreg) other than being set.  */
!       df_ref_record (df, x, loc, insn, ref_type, flags);
        return;
  
      case SET:
*************** df_uses_record (df, loc, ref_type, bb, i
*** 1161,1167 ****
      case PRE_MODIFY:
      case POST_MODIFY:
        /* Catch the def of the register being modified.  */
!       df_ref_record (df, XEXP (x, 0), &XEXP (x, 0), bb, insn, DF_REF_REG_DEF, DF_REF_READ_WRITE);
  
        /* ... Fall through to handle uses ...  */
  
--- 1157,1163 ----
      case PRE_MODIFY:
      case POST_MODIFY:
        /* Catch the def of the register being modified.  */
!       df_ref_record (df, XEXP (x, 0), &XEXP (x, 0), insn, DF_REF_REG_DEF, DF_REF_READ_WRITE);
  
        /* ... Fall through to handle uses ...  */
  
Index: df.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/df.h,v
retrieving revision 1.7.2.2
diff -c -3 -p -r1.7.2.2 df.h
*** df.h	2001/11/30 20:58:23	1.7.2.2
--- df.h	2002/01/17 12:31:45
*************** enum df_ref_flags
*** 57,63 ****
  struct ref
  {
    rtx reg;			/* The register referenced.  */
-   basic_block bb;		/* BB containing ref.  */
    rtx insn;			/* Insn containing ref.  */
    rtx *loc;			/* Loc is the location of the reg.  */
    struct df_link *chain;	/* Head of def-use or use-def chain.  */
--- 57,62 ----
*************** struct df_map
*** 175,182 ****
  #define DF_REF_REG(REF) ((REF)->reg)
  #define DF_REF_LOC(REF) ((REF)->loc)
  #endif
! #define DF_REF_BB(REF) ((REF)->bb)
! #define DF_REF_BBNO(REF) ((REF)->bb->index)
  #define DF_REF_INSN(REF) ((REF)->insn)
  #define DF_REF_INSN_UID(REF) (INSN_UID ((REF)->insn))
  #define DF_REF_TYPE(REF) ((REF)->type)
--- 174,181 ----
  #define DF_REF_REG(REF) ((REF)->reg)
  #define DF_REF_LOC(REF) ((REF)->loc)
  #endif
! #define DF_REF_BB(REF) (BLOCK_FOR_INSN ((REF)->insn))
! #define DF_REF_BBNO(REF) (BLOCK_FOR_INSN ((REF)->insn)->index)
  #define DF_REF_INSN(REF) ((REF)->insn)
  #define DF_REF_INSN_UID(REF) (INSN_UID ((REF)->insn))
  #define DF_REF_TYPE(REF) ((REF)->type)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]