This patch kit is v4 of the RTL frontend. For reference, the earlier
versions were:
v1 (2016-05-04):
"[PATCH 0/4] RFC: RTL frontend"
https://gcc.gnu.org/ml/gcc-patches/2016-05/msg00352.html
v2 (2016-09-08):
"[PATCH 0/9] RFC: selftests based on RTL dumps"
https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00483.html
v3 (2016-10-05):
"[PATCH 00/16] RTL frontend (v3)"
https://gcc.gnu.org/ml/gcc-patches/2016-10/msg00261.html
The patch kit is based on top of r242065 (2016-11-11). There are some
places where it will conflict with the gimple frontend, but
these are likely to be fairly easy to resolve.
What's new in v4:
* Split out more preliminary patches from the function_reader patch
* Rewritten the loader and all tests to use the new "compact" dump
format (which has changed various times since v3).
* Support for reuse_rtx in loader
* Handling of params, DECL_RTL and DECL_RTL_INCOMING
* Moved target-dependent selftests to target-specific code
(aarch64.c and i386.c)
* Dropped the RTL "frontend" itself, in favor of doing it via Richi's
idea of specially-tagged functions in the C frontend (tagged with
"__RTL").
* In __RTL mode, rather than running just one pass, run *all* passes,
but start at the given pass. This means we can support "dg-do run"
tests that execute the resulting code, mixing C and RTL in test cases
(and potentially even with gimple dumps).
* More test cases. Use "dg-do run" in various places.
* Lots of bugfixing
I've successfully bootstrapped®rtested the kit as whole on
x86_64-pc-linux-gnu.
Stage 1 builds and passes selftesting and check-gcc with
RUNTESTFLAGS="rtl.exp=*" for target aarch64-linux-gnu.
OK for trunk?
David Malcolm (9):
print_rtx: implement support for reuse IDs (v2)
(approved) Introduce rtl_data::init_stack_alignment
Introduce emit_status::ensure_regno_capacity
Add some functions for use by the RTL frontend.
Introduce selftest::locate_file (v4)
Split class rtx_reader into md_reader vs rtx_reader
Add RTL-error-handling to host
Introduce class function_reader (v4)
Add "__RTL" to cc1 (v4)
gcc/Makefile.in | 16 +-
gcc/c-family/c-common.c | 1 +
gcc/c-family/c-common.h | 3 +
gcc/c/c-parser.c | 122 +-
gcc/cfg.c | 1 -
gcc/cfgexpand.c | 5 +-
gcc/cgraph.h | 4 +
gcc/cgraphunit.c | 41 +-
gcc/common.opt | 6 +-
gcc/config/aarch64/aarch64.c | 49 +
gcc/config/i386/i386.c | 231 +++
gcc/emit-rtl.c | 73 +-
gcc/emit-rtl.h | 4 +
gcc/errors.c | 23 +-
gcc/errors.h | 14 +
gcc/final.c | 3 +-
gcc/function-tests.c | 2 +-
gcc/function.c | 3 +-
gcc/function.h | 11 +
gcc/genpreds.c | 6 +-
gcc/gensupport.c | 2 +-
gcc/gimple-expr.c | 2 +-
gcc/pass_manager.h | 6 +
gcc/passes.c | 47 +
gcc/print-rtl-function.c | 7 +-
gcc/print-rtl.c | 141 +-
gcc/print-rtl.h | 81 +-
gcc/read-md.c | 207 +-
gcc/read-md.h | 106 +-
gcc/read-rtl-function.c | 2173 ++++++++++++++++++++
gcc/read-rtl-function.h | 39 +
gcc/read-rtl.c | 300 ++-
gcc/rtl-tests.c | 54 +-
gcc/rtl.h | 2 +
gcc/run-rtl-passes.c | 85 +
gcc/run-rtl-passes.h | 25 +
gcc/selftest-rtl.c | 82 +
gcc/selftest-rtl.h | 32 +-
gcc/selftest-run-tests.c | 9 +
gcc/selftest.c | 28 +
gcc/selftest.h | 11 +
gcc/testsuite/gcc.dg/cpp/pr71591.c | 2 +-
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/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 +
.../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/vregs.c | 112 +
gcc/testsuite/selftests/aarch64/times-two.rtl | 36 +
gcc/testsuite/selftests/asr_div1.rtl | 24 +
gcc/testsuite/selftests/bb-index.rtl | 8 +
gcc/testsuite/selftests/cfg-test.rtl | 37 +
gcc/testsuite/selftests/const-int.rtl | 20 +
gcc/testsuite/selftests/example-labels.rtl | 8 +
gcc/testsuite/selftests/example.txt | 1 +
gcc/testsuite/selftests/insn-with-mode.rtl | 7 +
gcc/testsuite/selftests/jump-to-label-ref.rtl | 17 +
gcc/testsuite/selftests/jump-to-return.rtl | 11 +
gcc/testsuite/selftests/jump-to-simple-return.rtl | 11 +
gcc/testsuite/selftests/note-insn-deleted.rtl | 5 +
gcc/testsuite/selftests/note_insn_basic_block.rtl | 9 +
gcc/testsuite/selftests/simple-cse.rtl | 16 +
gcc/testsuite/selftests/symbol-ref.rtl | 13 +
gcc/testsuite/selftests/x86_64/call-insn.rtl | 17 +
.../selftests/x86_64/copy-hard-reg-into-frame.rtl | 15 +
gcc/testsuite/selftests/x86_64/times-two.rtl | 51 +
gcc/testsuite/selftests/x86_64/unspec.rtl | 20 +
gcc/tree-dfa.c | 5 +
80 files changed, 5494 insertions(+), 169 deletions(-)
create mode 100644 gcc/read-rtl-function.c
create mode 100644 gcc/read-rtl-function.h
create mode 100644 gcc/run-rtl-passes.c
create mode 100644 gcc/run-rtl-passes.h
create mode 100644 gcc/selftest-rtl.c
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/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-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/vregs.c
create mode 100644 gcc/testsuite/selftests/aarch64/times-two.rtl
create mode 100644 gcc/testsuite/selftests/asr_div1.rtl
create mode 100644 gcc/testsuite/selftests/bb-index.rtl
create mode 100644 gcc/testsuite/selftests/cfg-test.rtl
create mode 100644 gcc/testsuite/selftests/const-int.rtl
create mode 100644 gcc/testsuite/selftests/example-labels.rtl
create mode 100644 gcc/testsuite/selftests/example.txt
create mode 100644 gcc/testsuite/selftests/insn-with-mode.rtl
create mode 100644 gcc/testsuite/selftests/jump-to-label-ref.rtl
create mode 100644 gcc/testsuite/selftests/jump-to-return.rtl
create mode 100644 gcc/testsuite/selftests/jump-to-simple-return.rtl
create mode 100644 gcc/testsuite/selftests/note-insn-deleted.rtl
create mode 100644 gcc/testsuite/selftests/note_insn_basic_block.rtl
create mode 100644 gcc/testsuite/selftests/simple-cse.rtl
create mode 100644 gcc/testsuite/selftests/symbol-ref.rtl
create mode 100644 gcc/testsuite/selftests/x86_64/call-insn.rtl
create mode 100644 gcc/testsuite/selftests/x86_64/copy-hard-reg-into-frame.rtl
create mode 100644 gcc/testsuite/selftests/x86_64/times-two.rtl
create mode 100644 gcc/testsuite/selftests/x86_64/unspec.rtl
--
1.8.5.3