public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Michael Zolotukhin <michael.v.zolotukhin@gmail.com>
To: Richard Henderson <rth@redhat.com>
Cc: Kirill Yukhin <kirill.yukhin@gmail.com>,
	Jakub Jelinek <jakub@redhat.com>,
		gcc-patches List <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH, RFC] Dumping expanded MD files
Date: Thu, 29 Nov 2012 07:22:00 -0000	[thread overview]
Message-ID: <CANtU07_Q8ePRRJzEw-GjuVYPxBpEUQvc0wj41ahC9L01hT59-Q@mail.gmail.com> (raw)
In-Reply-To: <50B4F99B.60900@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 1488 bytes --]

Thanks for the input, the patch seems  to be much more cute now.
Do we still need to play with release/non-release builds, or is it ok
to commit this patch to the trunk as it is?

Changelog:
2012-11-29  Michael Zolotukhin  <michael.v.zolotukhin@intel.com>

        * Makefile.in: Add target mddump, build/genmddump.o.  Extend
        genprogrtl with mddump.
        * genmddump.c: New.

On 27 November 2012 21:34, Richard Henderson <rth@redhat.com> wrote:
> On 11/22/2012 09:48 AM, Kirill Yukhin wrote:
>> +.PHONY: s-mddump
>> +s-mddump: $(BUILD_RTL) $(MD_DEPS) build/genmddump$(build_exeext)
>> +     $(RUN_GEN) build/genmddump$(build_exeext) $(md_file) 2> tmp-mddump.md
>
> I think just
>
> mddump: ...
>         $(RUN_GEN) ... > mddump
>
> will be sufficient.  This is not actually used by the build at all, so we
> don't need to play games with stamp files etc.
>
> There's no need for top-level makefile changes at all.  When you want to
> use this, simply cd into the gcc subdirectory.
>
>> +/* Dump all available rtl queues.  */
>> +void
>> +dump_expanded_md (void)
>
> Why?  Seems to me that you can just have genmddump.c simply use the
> generic read_md_rtx interface, dumping as it goes.  You might also
> consider dumping the pattern_lineno argument as a comment before the
> pattern.  Otherwise it might be tricky to match up the dump pattern
> with the original input file patterns.
>
>
> r~

-- 
---
Best regards,
Michael V. Zolotukhin,
Software Engineer
Intel Corporation.

[-- Attachment #2: mddump-2.patch --]
[-- Type: application/octet-stream, Size: 3718 bytes --]

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index c7b8648..c56c1db 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -3620,6 +3620,10 @@ insn-preds.c: s-preds; @true
 tm-preds.h: s-preds-h; @true
 tm-constrs.h: s-constrs-h; @true
 
+.PHONY: mddump
+mddump: $(BUILD_RTL) $(MD_DEPS) build/genmddump$(build_exeext)
+	$(RUN_GEN) build/genmddump$(build_exeext) $(md_file) 2> tmp-mddump.md
+
 s-preds: $(MD_DEPS) build/genpreds$(build_exeext)
 	$(RUN_GEN) build/genpreds$(build_exeext) $(md_file) > tmp-preds.c
 	$(SHELL) $(srcdir)/../move-if-change tmp-preds.c insn-preds.c
@@ -3937,6 +3941,8 @@ build/genrecog.o : genrecog.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
   coretypes.h $(GTM_H) errors.h $(READ_MD_H) gensupport.h
 build/genhooks.o : genhooks.c $(TARGET_DEF) $(C_TARGET_DEF)		\
   $(COMMON_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h
+build/genmddump.o : genmddump.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H)	\
+  coretypes.h $(GTM_H) errors.h $(READ_MD_H) gensupport.h
 
 # Compile the programs that generate insn-* from the machine description.
 # They are compiled with $(COMPILER_FOR_BUILD), and associated libraries,
@@ -3945,7 +3951,7 @@ build/genhooks.o : genhooks.c $(TARGET_DEF) $(C_TARGET_DEF)		\
 
 # All these programs use the RTL reader ($(BUILD_RTL)).
 genprogrtl = attr attr-common attrtab automata codes conditions config emit \
-	     extract flags opinit output peep preds recog
+	     extract flags opinit output peep preds recog mddump
 $(genprogrtl:%=build/gen%$(build_exeext)): $(BUILD_RTL)
 
 # All these programs use the MD reader ($(BUILD_MD)).
diff --git a/gcc/genmddump.c b/gcc/genmddump.c
new file mode 100644
index 0000000..d034993
--- /dev/null
+++ b/gcc/genmddump.c
@@ -0,0 +1,66 @@
+/* Generate code from machine description to recognize rtl as insns.
+   Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1997, 1998,
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010,
+   2012 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+
+/* This program is used to produce tmp-mddump.md, which represents
+   md-file with expanded iterators and after define_subst transformation
+   is performed.
+
+   The only argument of the program is a source md-file (e.g.
+   config/i386/i386.md).  STDERR is used for the program output.  */
+
+#include "bconfig.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+#include "rtl.h"
+#include "errors.h"
+#include "read-md.h"
+#include "gensupport.h"
+
+\f
+extern int main (int, char **);
+
+int
+main (int argc, char **argv)
+{
+  rtx desc;
+  int pattern_lineno;
+  int code; /* not used */
+  progname = "genmddump";
+
+  if (!init_rtx_reader_args (argc, argv))
+    return (FATAL_EXIT_CODE);
+
+  /* Read the machine description.  */
+  while (1)
+    {
+      desc = read_md_rtx (&pattern_lineno, &code);
+      if (desc == NULL)
+	break;
+      fprintf (stderr, ";; %s: %d\n", read_md_filename, pattern_lineno);
+      debug_rtx (desc);
+    }
+
+  fflush (stderr);
+  return (ferror (stderr) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+}
+

  reply	other threads:[~2012-11-29  7:22 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-22 17:49 Kirill Yukhin
2012-11-23  9:26 ` Mike Stump
2012-11-24  3:00 ` Hans-Peter Nilsson
2012-11-27 17:34 ` Richard Henderson
2012-11-29  7:22   ` Michael Zolotukhin [this message]
2012-11-29 18:41     ` Richard Henderson
2012-11-29 19:06     ` Richard Henderson
2012-11-30  9:10       ` Michael Zolotukhin
2012-11-30 19:13         ` Richard Henderson
2012-12-04 12:59           ` Kirill Yukhin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CANtU07_Q8ePRRJzEw-GjuVYPxBpEUQvc0wj41ahC9L01hT59-Q@mail.gmail.com \
    --to=michael.v.zolotukhin@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    --cc=kirill.yukhin@gmail.com \
    --cc=rth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).