On Tue, 2014-08-12 at 15:21 -0600, Jeff Law wrote: > On 08/06/14 11:19, David Malcolm wrote: > > For now, convert DEP_PRO and DEP_CON into functions. We will eventually > > change them back to macros once the relevant fields are of type > > rtx_insn *. > > > > gcc/ > > * sched-int.h (DEP_PRO): struct _dep's "pro" and "con" fields will > > eventually be rtx_insn *, but to help with transition, for now, > > convert from an access macro into a pair of functions: DEP_PRO > > returning an rtx_insn * and... > > (SET_DEP_PRO): New function, for use where DEP_PRO is used as an > > lvalue, returning an rtx&. > > (DEP_CON): Analogous changes to DEP_PRO above. > > (SET_DEP_CON): Likewise. > > > > * haifa-sched.c (create_check_block_twin): Replace DEP_CON used as > > an lvalue to SET_DEP_CON. > > * sched-deps.c (init_dep_1): Likewise for DEP_PRO and DEP_CON. > > (sd_copy_back_deps): Likewise for DEP_CON. > > (DEP_PRO): New function, adding a checked cast for now. > > (DEP_CON): Likewise. > > (SET_DEP_PRO): New function. > > (SET_DEP_CON): Likewise. > OK.
Thanks. Fixed up the two as_a_nullable to safe_as_a, and committed to trunk as r214164, having verified bootstrap®rtest on x86_64-unknown-linux-gnu (Fedora 20) albeit in combination with patches 9-29 [1], and verified that it builds standalone with 9 targets. Am attaching what I committed. FWIW these function becomes macros again in patch #175.
Index: ChangeLog =================================================================== --- ChangeLog (revision 214163) +++ ChangeLog (revision 214164) @@ -1,5 +1,9 @@ 2014-08-19 David Malcolm <dmalc...@redhat.com> + * rtx-classes-status.txt (TODO): Add SET_DEP_PRO, SET_DEP_CON. + +2014-08-19 David Malcolm <dmalc...@redhat.com> + * rtx-classes-status.txt (TODO): Add DF_REF_INSN. 2014-08-19 Joost VandeVondele <vond...@gcc.gnu.org> Index: rtx-classes-status.txt =================================================================== --- rtx-classes-status.txt (revision 214163) +++ rtx-classes-status.txt (revision 214164) @@ -16,4 +16,5 @@ ================================= * DF_REF_INSN * SET_BB_HEAD, SET_BB_END, SET_BB_HEADER, SET_BB_FOOTER +* SET_DEP_PRO, SET_DEP_CON * SET_NEXT_INSN, SET_PREV_INSN Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (revision 214163) +++ gcc/ChangeLog (revision 214164) @@ -1,3 +1,23 @@ +2014-08-19 David Malcolm <dmalc...@redhat.com> + + * sched-int.h (DEP_PRO): struct _dep's "pro" and "con" fields will + eventually be rtx_insn *, but to help with transition, for now, + convert from an access macro into a pair of functions: DEP_PRO + returning an rtx_insn * and... + (SET_DEP_PRO): New function, for use where DEP_PRO is used as an + lvalue, returning an rtx&. + (DEP_CON): Analogous changes to DEP_PRO above. + (SET_DEP_CON): Likewise. + + * haifa-sched.c (create_check_block_twin): Replace DEP_CON used as + an lvalue to SET_DEP_CON. + * sched-deps.c (init_dep_1): Likewise for DEP_PRO and DEP_CON. + (sd_copy_back_deps): Likewise for DEP_CON. + (DEP_PRO): New function, adding a checked cast for now. + (DEP_CON): Likewise. + (SET_DEP_PRO): New function. + (SET_DEP_CON): Likewise. + 2014-08-19 Yaakov Selkowitz <yselk...@redhat.com> * config.gcc (*-*-cygwin*): Use __cxa_atexit by default. Index: gcc/haifa-sched.c =================================================================== --- gcc/haifa-sched.c (revision 214163) +++ gcc/haifa-sched.c (revision 214164) @@ -7947,7 +7947,7 @@ if (rec != EXIT_BLOCK_PTR_FOR_FN (cfun)) { - DEP_CON (new_dep) = twin; + SET_DEP_CON (new_dep) = twin; sd_add_dep (new_dep, false); } } Index: gcc/sched-deps.c =================================================================== --- gcc/sched-deps.c (revision 214163) +++ gcc/sched-deps.c (revision 214164) @@ -103,8 +103,8 @@ void init_dep_1 (dep_t dep, rtx pro, rtx con, enum reg_note type, ds_t ds) { - DEP_PRO (dep) = pro; - DEP_CON (dep) = con; + SET_DEP_PRO (dep) = pro; + SET_DEP_CON (dep) = con; DEP_TYPE (dep) = type; DEP_STATUS (dep) = ds; DEP_COST (dep) = UNKNOWN_DEP_COST; @@ -1416,7 +1416,7 @@ dep_def _new_dep, *new_dep = &_new_dep; copy_dep (new_dep, dep); - DEP_CON (new_dep) = to; + SET_DEP_CON (new_dep) = to; sd_add_dep (new_dep, resolved_p); } } @@ -4915,4 +4915,24 @@ success_in_block); } +rtx_insn *DEP_PRO (dep_t dep) +{ + return safe_as_a <rtx_insn *> (dep->pro); +} + +rtx_insn *DEP_CON (dep_t dep) +{ + return safe_as_a <rtx_insn *> (dep->con); +} + +rtx& SET_DEP_PRO (dep_t dep) +{ + return dep->pro; +} + +rtx& SET_DEP_CON (dep_t dep) +{ + return dep->con; +} + #endif /* INSN_SCHEDULING */ Index: gcc/sched-int.h =================================================================== --- gcc/sched-int.h (revision 214163) +++ gcc/sched-int.h (revision 214164) @@ -250,8 +250,10 @@ typedef struct _dep dep_def; typedef dep_def *dep_t; -#define DEP_PRO(D) ((D)->pro) -#define DEP_CON(D) ((D)->con) +extern rtx_insn *DEP_PRO (dep_t dep); +extern rtx_insn *DEP_CON (dep_t dep); +extern rtx& SET_DEP_PRO (dep_t dep); +extern rtx& SET_DEP_CON (dep_t dep); #define DEP_TYPE(D) ((D)->type) #define DEP_STATUS(D) ((D)->status) #define DEP_COST(D) ((D)->cost)