On Tue, 2014-08-12 at 15:20 -0600, Jeff Law wrote: > On 08/06/14 11:19, David Malcolm wrote: > > DF_REF_INSN looks up the "insn" field of the referenced df_insn_info. > > This will eventually be an rtx_insn *, but for now is just an rtx. > > > > As further scaffolding: for now, convert DF_REF_INSN to a function, > > adding a checked downcast to rtx_insn *. This can eventually be > > converted back to macro when the field is an rtx_insn *. > > > > gcc/ > > * 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 *. > > > > / > > * rtx-classes-status.txt: Add DF_REF_INSN. > OK.
Thanks. Fixed up the as_a_nullable to safe_as_a, and committed to trunk as r214160, 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 for 9 targets. Am attaching what I committed. Dave [1] as per https://gcc.gnu.org/ml/gcc-patches/2014-08/msg01420.html
Index: ChangeLog =================================================================== --- ChangeLog (revision 214159) +++ ChangeLog (revision 214160) @@ -1,3 +1,7 @@ +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> * MAINTAINERS (Write After Approval): Add myself. Index: rtx-classes-status.txt =================================================================== --- rtx-classes-status.txt (revision 214159) +++ rtx-classes-status.txt (revision 214160) @@ -14,5 +14,6 @@ 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 Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (revision 214159) +++ gcc/ChangeLog (revision 214160) @@ -1,3 +1,9 @@ +2014-08-19 David Malcolm <dmalc...@redhat.com> + + * 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 <yselk...@redhat.com> * config/i386/cygwin.h (LINK_SPEC): Pass --tsaware flag only Index: gcc/df-core.c =================================================================== --- gcc/df-core.c (revision 214159) +++ gcc/df-core.c (revision 214160) @@ -2502,3 +2502,9 @@ 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 <rtx_insn *> (insn); +} Index: gcc/df.h =================================================================== --- gcc/df.h (revision 214159) +++ gcc/df.h (revision 214160) @@ -649,7 +649,7 @@ : 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)