This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
df cleanup
- From: Jan Hubicka <jh at suse dot cz>
- To: gcc-patches at gcc dot gnu dot org, rth at cygnus dot com, gcc-pdo at atrey dot karlin dot mff dot cuni dot cz
- Date: Thu, 17 Jan 2002 13:37:20 +0100
- Subject: 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)