diff --git a/ChangeLog b/ChangeLog index 3c35216fdbd..7da62f9dcdd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2014-08-19 David Malcolm + + * rtx-classes-status.txt (TODO): Add SET_DEP_PRO, SET_DEP_CON. + 2014-08-19 David Malcolm * rtx-classes-status.txt (TODO): Add DF_REF_INSN. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b71c1c7144f..14b9a38e58d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2014-08-19 David Malcolm + + * 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 * config.gcc (*-*-cygwin*): Use __cxa_atexit by default. diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index 32b1adf5bd9..677cabc382d 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -7947,7 +7947,7 @@ create_check_block_twin (rtx insn, bool mutate_p) 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); } } diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 049927fe6e0..eaa2e4e00c6 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -103,8 +103,8 @@ dk_to_ds (enum reg_note dk) 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 @@ sd_copy_back_deps (rtx to, rtx from, bool resolved_p) 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 @@ find_modifiable_mems (rtx head, rtx tail) success_in_block); } +rtx_insn *DEP_PRO (dep_t dep) +{ + return safe_as_a (dep->pro); +} + +rtx_insn *DEP_CON (dep_t dep) +{ + return safe_as_a (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 */ diff --git a/gcc/sched-int.h b/gcc/sched-int.h index fe00496faa5..3680889fff5 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -250,8 +250,10 @@ struct _dep 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) diff --git a/rtx-classes-status.txt b/rtx-classes-status.txt index e4d404ffca2..b93ee593c8d 100644 --- a/rtx-classes-status.txt +++ b/rtx-classes-status.txt @@ -16,4 +16,5 @@ TODO: "Scaffolding" to be removed ================================= * 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