diff --git a/ChangeLog b/ChangeLog index 52976fe372f..3c35216fdbd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2014-08-19 David Malcolm + + * rtx-classes-status.txt (TODO): Add DF_REF_INSN. + 2014-08-19 Joost VandeVondele * MAINTAINERS (Write After Approval): Add myself. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a4d6c72aefd..bdc40fe5192 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-08-19 David Malcolm + + * df-core.c (DF_REF_INSN): New, using a checked cast for now. + * df.h (DF_REF_INSN): Convert from a macro to a function, so + that we can return an rtx_insn *. + 2014-08-19 Yaakov Selkowitz * config/i386/cygwin.h (LINK_SPEC): Pass --tsaware flag only diff --git a/gcc/df-core.c b/gcc/df-core.c index ae0d2330133..5d32fa3e795 100644 --- a/gcc/df-core.c +++ b/gcc/df-core.c @@ -2502,3 +2502,9 @@ debug_df_chain (struct df_link *link) df_chain_dump (link, stderr); fputc ('\n', stderr); } + +rtx_insn *DF_REF_INSN (df_ref ref) +{ + rtx insn = ref->base.insn_info->insn; + return safe_as_a (insn); +} diff --git a/gcc/df.h b/gcc/df.h index ca0f228c3e7..9f54023f3df 100644 --- a/gcc/df.h +++ b/gcc/df.h @@ -649,7 +649,7 @@ struct df_d : BLOCK_FOR_INSN (DF_REF_INSN (REF))) #define DF_REF_BBNO(REF) (DF_REF_BB (REF)->index) #define DF_REF_INSN_INFO(REF) ((REF)->base.insn_info) -#define DF_REF_INSN(REF) ((REF)->base.insn_info->insn) +extern rtx_insn *DF_REF_INSN (df_ref ref); #define DF_REF_INSN_UID(REF) (INSN_UID (DF_REF_INSN(REF))) #define DF_REF_CLASS(REF) ((REF)->base.cl) #define DF_REF_TYPE(REF) ((REF)->base.type) diff --git a/rtx-classes-status.txt b/rtx-classes-status.txt index 042eee294d0..e4d404ffca2 100644 --- a/rtx-classes-status.txt +++ b/rtx-classes-status.txt @@ -14,5 +14,6 @@ Phase 6: use extra rtx_def subclasses: TODO TODO: "Scaffolding" to be removed ================================= +* DF_REF_INSN * SET_BB_HEAD, SET_BB_END, SET_BB_HEADER, SET_BB_FOOTER * SET_NEXT_INSN, SET_PREV_INSN