This is a slightly updated version of the patch sent here:

  "[PATCH] Add "__RTL" to cc1 (v7)"
    https://gcc.gnu.org/ml/gcc-patches/2016-12/msg01662.html

but split up into smaller parts to (I hope) make review
easier.

Other changes in v8:
 - fix copyright years in new files
 - split out changes to passes.c; fixups to pass skipping

The set of patches wires up the RTL-reading code into cc1 for
functions tagged with "__RTL" in an analogous manner to those
tagged with "__GIMPLE", and adds a collection of testcases using
this functionality.

One difference from the GIMPLE frontend is that, due to the
pervasive singleton state throughout the RTL code, we can't have
more than one RTL function in memory at once.  Hence as soon as
we're done parsing an __RTL-tagged function we have to run the
rest of the passes on it, and emit asm for it, rather than having
the callgraph control this.

Successfully bootstrapped&regrtested on x86_64-pc-linux-gnu;
v7 was successfully built for 191 target configurations.

David Malcolm (10):
  Add "__RTL" to C frontend
  Don't assume that copy tables were initialized
  callgraph: handle __RTL functions
  Don't call delete_tree_ssa for __RTL functions
  Update "startwith" logic for pass-skipping to handle __RTL functions
  Add a way for the C frontend to compile __RTL-tagged functions
  Extend .md and RTL parsing to support being wired up to cc1
  testsuite: add platform-independent files
  testsuite: add aarch64-specific files
  testsuite: add x86_64-specific files

 gcc/Makefile.in                                    |   1 +
 gcc/c-family/c-common.c                            |   1 +
 gcc/c-family/c-common.h                            |   3 +
 gcc/c/c-parser.c                                   | 109 ++++++++++++++++-
 gcc/c/c-tree.h                                     |   7 +-
 gcc/c/gimple-parser.c                              |   8 +-
 gcc/c/gimple-parser.h                              |   2 +-
 gcc/cfg.c                                          |   9 ++
 gcc/cfg.h                                          |   1 +
 gcc/cfgrtl.c                                       |   3 +-
 gcc/cgraph.h                                       |   4 +
 gcc/cgraphunit.c                                   |  41 ++++++-
 gcc/final.c                                        |   3 +-
 gcc/function.h                                     |   2 +-
 gcc/gimple-expr.c                                  |   3 +-
 gcc/pass_manager.h                                 |   6 +
 gcc/passes.c                                       |  65 ++++++++--
 gcc/read-md.c                                      |  34 +++++-
 gcc/read-md.h                                      |   7 ++
 gcc/read-rtl-function.c                            |  83 ++++++++++---
 gcc/read-rtl-function.h                            |   3 +
 gcc/run-rtl-passes.c                               |  66 ++++++++++
 gcc/run-rtl-passes.h                               |  25 ++++
 gcc/testsuite/gcc.dg/rtl/aarch64/asr_div1.c        |  41 +++++++
 gcc/testsuite/gcc.dg/rtl/aarch64/pr71779.c         |  50 ++++++++
 gcc/testsuite/gcc.dg/rtl/rtl.exp                   |  41 +++++++
 gcc/testsuite/gcc.dg/rtl/test.c                    |  31 +++++
 gcc/testsuite/gcc.dg/rtl/truncated-rtl-file.c      |   2 +
 gcc/testsuite/gcc.dg/rtl/unknown-rtx-code.c        |   8 ++
 gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c           | 116 ++++++++++++++++++
 .../gcc.dg/rtl/x86_64/different-structs.c          |  81 +++++++++++++
 gcc/testsuite/gcc.dg/rtl/x86_64/final.c            | 133 +++++++++++++++++++++
 gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c   | 117 ++++++++++++++++++
 gcc/testsuite/gcc.dg/rtl/x86_64/ira.c              | 111 +++++++++++++++++
 gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c | 110 +++++++++++++++++
 .../gcc.dg/rtl/x86_64/test-multiple-fns.c          | 105 ++++++++++++++++
 .../rtl/x86_64/test-return-const.c.after-expand.c  |  39 ++++++
 .../rtl/x86_64/test-return-const.c.before-fwprop.c |  42 +++++++
 gcc/testsuite/gcc.dg/rtl/x86_64/test-rtl.c         | 101 ++++++++++++++++
 gcc/testsuite/gcc.dg/rtl/x86_64/test_1.h           |  16 +++
 .../gcc.dg/rtl/x86_64/times-two.c.after-expand.c   |  70 +++++++++++
 .../gcc.dg/rtl/x86_64/times-two.c.before-df.c      |  54 +++++++++
 gcc/testsuite/gcc.dg/rtl/x86_64/times-two.h        |  22 ++++
 gcc/testsuite/gcc.dg/rtl/x86_64/vregs.c            | 112 +++++++++++++++++
 44 files changed, 1844 insertions(+), 44 deletions(-)
 create mode 100644 gcc/run-rtl-passes.c
 create mode 100644 gcc/run-rtl-passes.h
 create mode 100644 gcc/testsuite/gcc.dg/rtl/aarch64/asr_div1.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/aarch64/pr71779.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/rtl.exp
 create mode 100644 gcc/testsuite/gcc.dg/rtl/test.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/truncated-rtl-file.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/unknown-rtx-code.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/final.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/pro_and_epilogue.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/test-multiple-fns.c
 create mode 100644 
gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.after-expand.c
 create mode 100644 
gcc/testsuite/gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/test-rtl.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/test_1.h
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.after-expand.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/times-two.c.before-df.c
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/times-two.h
 create mode 100644 gcc/testsuite/gcc.dg/rtl/x86_64/vregs.c

-- 
1.8.5.3

Reply via email to