This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 012/236] Convert DF_REF_INSN to a function for now
- From: David Malcolm <dmalcolm at redhat dot com>
- To: Jeff Law <law at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 19 Aug 2014 11:19:24 -0400
- Subject: Re: [PATCH 012/236] Convert DF_REF_INSN to a function for now
- Authentication-results: sourceware.org; auth=none
- References: <1407345815-14551-1-git-send-email-dmalcolm at redhat dot com> <1407345815-14551-13-git-send-email-dmalcolm at redhat dot com> <53EA8535 dot 7090906 at redhat dot com>
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 <dmalcolm@redhat.com>
+
+ * rtx-classes-status.txt (TODO): Add DF_REF_INSN.
+
2014-08-19 Joost VandeVondele <vondele@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 <dmalcolm@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 <yselkowi@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)