This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 00/27] Merger of jit branch v3


I'd like to merge the JIT branch into trunk:
  https://gcc.gnu.org/wiki/JIT

This is "v3" since it incorporates fixes for various issues
identified in earlier submissions:
  v1: https://gcc.gnu.org/ml/gcc-patches/2014-09/msg02056.html
  v2: https://gcc.gnu.org/ml/gcc-patches/2014-10/msg01168.html

I've merged some of the work approved earlier into trunk.

Of the remaining work, some has already been approved, and some
hasn't.  I've split the latter up into more fine-grained patches
in the hope it will make review easier, so there are 27 patches
in this kit, compared to 10 in the earlier one.

Here's an overview of the patches:

  01/27: gcc: configure and Makefile changes needed by jit
    Needs review.
    Corresponds to:
      "[PATCH 2/5] gcc: configure and Makefile changes needed by jit"
        https://gcc.gnu.org/ml/gcc-patches/2014-10/msg01169.html
    and has had cleanups in response to concerns from Jeff and Joseph,
    to remove the need to install when running the jit testsuite.

  02/27: JIT-related changes outside of jit subdir
    Already approved by Jeff.

  03/27: Add Sphinx to install.texi
    Needs review.

Patches 04-18 correspond to:
  "[PATCH 06/10] Heart of the JIT implementation
      (was: Re: [PATCH 0/5] Merger of jit branch (v2))"
    https://gcc.gnu.org/ml/gcc-patches/2014-10/msg01247.html
from v2; I've broken them up by file to make them easier to review:

  04/27: New file: gcc/jit/notes.txt
  05/27: New file: gcc/jit/config-lang.in
  06/27: New file: gcc/jit/Make-lang.in
  07/27: New file: gcc/jit/dummy-frontend.c
  08/27: New file: gcc/jit/libgccjit.h
  09/27: New file: gcc/jit/libgccjit.map
  10/27: New file: gcc/jit/libgccjit.c
  11/27: New file: gcc/jit/jit-common.h
  12/27: New file: gcc/jit/jit-recording.h
  13/27: New file: gcc/jit/jit-recording.c
  14/27: New files: gcc/jit/jit-builtins.{c|h}
  15/27: New file: gcc/jit/jit-playback.h
  16/27: New file: gcc/jit/jit-playback.c
  17/27: New file: gcc/jit/libgccjit++.h
  18/27: New file: gcc/jit/TODO.rst
    All of these need review.

  19/27: Testsuite for the JIT
    Earlier version already approved by Jeff, only small changes since.

  20/27: Documentation: Makefile and conf.py
  21/27: Documentation: the "examples" subdirectory
  22/27: Documentation: top-level index.rst
  23/27: Documentation: the "intro" subdirectory
  24/27: Documentation: add "topics" subdirectory
  25/27: Documentation: add "internals" subdirectory
    All of these need review.
    Patches 20-25 correspond to:
      "[PATCH 08/10] Documentation for the JIT library
          (Re: Patches 5-10 of jit merger)"
        https://gcc.gnu.org/ml/gcc-patches/2014-10/msg01392.html
    from v2.  Since then, I've:
      * eliminated all mentions of pkg-config (since we no longer
        support this)
      * eliminated the installation section and the discussion of
        packages
      * converted the final page (docs/internals/index.rst) into a
        short guide for contributors to the project (e.g. myself and
        other maintainers)
     Prebuilt HTML from this can be seen at:
       https://dmalcolm.fedorapeople.org/gcc/libgccjit-api-docs/index.html
     Again, I've broken them up into smaller patches to make them
     easier to review.

  26/27: Prebuilt texinfo documentation for the JIT library
    Already (pre)approved by Jeff.

  27/27: ChangeLog files
    Earlier version approved by Jeff, and presumably all changes
    since count as "obvious".

I've successfully bootstrapped and regression-tested the cumulative
result of all of the patches against a control build, building them
both with --enable-host-shared, and with
  --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto
adding ",jit" to the test build (both on x86_64-unknown-linux-gnu;
Fedora 20, using Monday's r216746 as the baseline).

There were no regressions vs the control build, and the patched build
gains a jit.sum, with 4663 passes (and no failures).

OK for trunk?
(patches 01, 03, 04-18, 20-25 are the ones needing review)

Overall diffstat follows:

 ChangeLog.jit                                      |   23 +
 MAINTAINERS                                        |    1 +
 contrib/ChangeLog.jit                              |   14 +
 contrib/jit-coverage-report.py                     |   67 +
 gcc/ChangeLog.jit                                  |  360 ++
 gcc/Makefile.in                                    |   20 +-
 gcc/configure                                      |   52 +-
 gcc/configure.ac                                   |   10 +
 gcc/doc/install.texi                               |    7 +-
 gcc/java/ChangeLog.jit                             |   14 +
 gcc/jit/ChangeLog                                  |    9 +
 gcc/jit/ChangeLog.jit                              | 3342 ++++++++++
 gcc/jit/Make-lang.in                               |  298 +
 gcc/jit/TODO.rst                                   |  119 +
 gcc/jit/config-lang.in                             |   38 +
 gcc/jit/docs/Makefile                              |  153 +
 gcc/jit/docs/_build/texinfo/Makefile               |   50 +
 gcc/jit/docs/_build/texinfo/factorial.png          |  Bin 0 -> 183838 bytes
 gcc/jit/docs/_build/texinfo/libgccjit.texi         | 6534 ++++++++++++++++++++
 gcc/jit/docs/_build/texinfo/sum-of-squares.png     |  Bin 0 -> 22839 bytes
 gcc/jit/docs/conf.py                               |  258 +
 gcc/jit/docs/examples/tut01-hello-world.c          |  123 +
 gcc/jit/docs/examples/tut02-square.c               |  107 +
 gcc/jit/docs/examples/tut03-sum-of-squares.c       |  172 +
 gcc/jit/docs/examples/tut04-toyvm/Makefile         |   11 +
 gcc/jit/docs/examples/tut04-toyvm/factorial.toy    |   50 +
 gcc/jit/docs/examples/tut04-toyvm/fibonacci.toy    |   66 +
 gcc/jit/docs/examples/tut04-toyvm/toyvm.c          |  861 +++
 gcc/jit/docs/index.rst                             |   50 +
 gcc/jit/docs/internals/index.rst                   |  216 +
 gcc/jit/docs/intro/factorial.png                   |  Bin 0 -> 183838 bytes
 gcc/jit/docs/intro/index.rst                       |   27 +
 gcc/jit/docs/intro/sum-of-squares.png              |  Bin 0 -> 22839 bytes
 gcc/jit/docs/intro/tutorial01.rst                  |   52 +
 gcc/jit/docs/intro/tutorial02.rst                  |  349 ++
 gcc/jit/docs/intro/tutorial03.rst                  |  378 ++
 gcc/jit/docs/intro/tutorial04.rst                  | 1108 ++++
 gcc/jit/docs/topics/contexts.rst                   |  315 +
 gcc/jit/docs/topics/expressions.rst                |  524 ++
 gcc/jit/docs/topics/functions.rst                  |  311 +
 gcc/jit/docs/topics/index.rst                      |   30 +
 gcc/jit/docs/topics/locations.rst                  |   69 +
 gcc/jit/docs/topics/objects.rst                    |   86 +
 gcc/jit/docs/topics/results.rst                    |   48 +
 gcc/jit/docs/topics/types.rst                      |  217 +
 gcc/jit/dummy-frontend.c                           |  240 +
 gcc/jit/jit-builtins.c                             |  424 ++
 gcc/jit/jit-builtins.h                             |  114 +
 gcc/jit/jit-common.h                               |  182 +
 gcc/jit/jit-playback.c                             | 2104 +++++++
 gcc/jit/jit-playback.h                             |  564 ++
 gcc/jit/jit-recording.c                            | 3434 ++++++++++
 gcc/jit/jit-recording.h                            | 1593 +++++
 gcc/jit/libgccjit++.h                              | 1574 +++++
 gcc/jit/libgccjit.c                                | 1506 +++++
 gcc/jit/libgccjit.h                                |  977 +++
 gcc/jit/libgccjit.map                              |  100 +
 gcc/jit/notes.txt                                  |   84 +
 gcc/testsuite/ChangeLog.jit                        |  619 ++
 gcc/testsuite/jit.dg/all-non-failing-tests.h       |  166 +
 gcc/testsuite/jit.dg/harness.h                     |  242 +
 gcc/testsuite/jit.dg/jit.exp                       |  293 +
 gcc/testsuite/jit.dg/test-accessing-struct.c       |  112 +
 gcc/testsuite/jit.dg/test-accessing-union.c        |   97 +
 gcc/testsuite/jit.dg/test-array-as-pointer.c       |  101 +
 gcc/testsuite/jit.dg/test-arrays.c                 |  165 +
 .../jit.dg/test-calling-external-function.c        |  118 +
 gcc/testsuite/jit.dg/test-calling-function-ptr.c   |  118 +
 gcc/testsuite/jit.dg/test-combination.c            |   67 +
 gcc/testsuite/jit.dg/test-dot-product.c            |  129 +
 gcc/testsuite/jit.dg/test-empty.c                  |   20 +
 .../test-error-accessing-field-in-other-struct.c   |  114 +
 .../jit.dg/test-error-adding-to-terminated-block.c |   48 +
 gcc/testsuite/jit.dg/test-error-array-as-pointer.c |   99 +
 gcc/testsuite/jit.dg/test-error-bad-cast.c         |   63 +
 .../jit.dg/test-error-block-in-wrong-function.c    |   65 +
 ...-error-call-through-ptr-with-mismatching-args.c |   74 +
 ...test-error-call-through-ptr-with-non-function.c |   65 +
 .../test-error-call-through-ptr-with-non-pointer.c |   62 +
 ...t-error-call-through-ptr-with-not-enough-args.c |   70 +
 ...est-error-call-through-ptr-with-too-many-args.c |   87 +
 .../jit.dg/test-error-call-with-mismatching-args.c |   87 +
 .../jit.dg/test-error-call-with-not-enough-args.c  |   87 +
 .../jit.dg/test-error-call-with-too-many-args.c    |   89 +
 .../test-error-dereference-field-of-non-pointer.c  |   95 +
 .../test-error-dereference-read-of-non-pointer.c   |   55 +
 .../jit.dg/test-error-index-not-a-numeric-type.c   |   34 +
 .../test-error-mismatching-types-in-assignment.c   |   61 +
 .../jit.dg/test-error-mismatching-types-in-call.c  |   80 +
 gcc/testsuite/jit.dg/test-error-missing-return.c   |   40 +
 .../jit.dg/test-error-null-passed-to-api.c         |   31 +
 .../test-error-return-within-void-function.c       |   54 +
 .../jit.dg/test-error-unreachable-block.c          |   50 +
 .../jit.dg/test-error-unterminated-block.c         |   42 +
 .../jit.dg/test-error-value-not-a-numeric-type.c   |   29 +
 gcc/testsuite/jit.dg/test-expressions.c            |  896 +++
 gcc/testsuite/jit.dg/test-factorial.c              |  103 +
 gcc/testsuite/jit.dg/test-fibonacci.c              |  136 +
 gcc/testsuite/jit.dg/test-functions.c              |  356 ++
 gcc/testsuite/jit.dg/test-fuzzer.c                 |  462 ++
 gcc/testsuite/jit.dg/test-hello-world.c            |   72 +
 gcc/testsuite/jit.dg/test-linked-list.c            |  141 +
 gcc/testsuite/jit.dg/test-long-names.c             |  112 +
 gcc/testsuite/jit.dg/test-nested-contexts.c        |  641 ++
 gcc/testsuite/jit.dg/test-nested-loops.c           |  179 +
 gcc/testsuite/jit.dg/test-operator-overloading.cc  |  310 +
 gcc/testsuite/jit.dg/test-quadratic.c              |  488 ++
 gcc/testsuite/jit.dg/test-quadratic.cc             |  366 ++
 gcc/testsuite/jit.dg/test-reading-struct.c         |  135 +
 gcc/testsuite/jit.dg/test-string-literal.c         |   52 +
 gcc/testsuite/jit.dg/test-sum-of-squares.c         |  126 +
 gcc/testsuite/jit.dg/test-threads.c                |  252 +
 gcc/testsuite/jit.dg/test-types.c                  |  361 ++
 gcc/testsuite/jit.dg/test-using-global.c           |   73 +
 gcc/testsuite/jit.dg/test-volatile.c               |   66 +
 gcc/timevar.def                                    |    6 +
 include/ChangeLog.jit                              |   11 +
 libbacktrace/ChangeLog.jit                         |   14 +
 libcpp/ChangeLog.jit                               |   22 +
 libdecnumber/ChangeLog.jit                         |   22 +
 libiberty/ChangeLog.jit                            |   23 +
 zlib/ChangeLog.jit                                 |   22 +
 122 files changed, 38704 insertions(+), 6 deletions(-)
 create mode 100644 ChangeLog.jit
 create mode 100644 contrib/ChangeLog.jit
 create mode 100644 contrib/jit-coverage-report.py
 create mode 100644 gcc/ChangeLog.jit
 create mode 100644 gcc/java/ChangeLog.jit
 create mode 100644 gcc/jit/ChangeLog
 create mode 100644 gcc/jit/ChangeLog.jit
 create mode 100644 gcc/jit/Make-lang.in
 create mode 100644 gcc/jit/TODO.rst
 create mode 100644 gcc/jit/config-lang.in
 create mode 100644 gcc/jit/docs/Makefile
 create mode 100644 gcc/jit/docs/_build/texinfo/Makefile
 create mode 100644 gcc/jit/docs/_build/texinfo/factorial.png
 create mode 100644 gcc/jit/docs/_build/texinfo/libgccjit.texi
 create mode 100644 gcc/jit/docs/_build/texinfo/sum-of-squares.png
 create mode 100644 gcc/jit/docs/conf.py
 create mode 100644 gcc/jit/docs/examples/tut01-hello-world.c
 create mode 100644 gcc/jit/docs/examples/tut02-square.c
 create mode 100644 gcc/jit/docs/examples/tut03-sum-of-squares.c
 create mode 100644 gcc/jit/docs/examples/tut04-toyvm/Makefile
 create mode 100644 gcc/jit/docs/examples/tut04-toyvm/factorial.toy
 create mode 100644 gcc/jit/docs/examples/tut04-toyvm/fibonacci.toy
 create mode 100644 gcc/jit/docs/examples/tut04-toyvm/toyvm.c
 create mode 100644 gcc/jit/docs/index.rst
 create mode 100644 gcc/jit/docs/internals/index.rst
 create mode 100644 gcc/jit/docs/intro/factorial.png
 create mode 100644 gcc/jit/docs/intro/index.rst
 create mode 100644 gcc/jit/docs/intro/sum-of-squares.png
 create mode 100644 gcc/jit/docs/intro/tutorial01.rst
 create mode 100644 gcc/jit/docs/intro/tutorial02.rst
 create mode 100644 gcc/jit/docs/intro/tutorial03.rst
 create mode 100644 gcc/jit/docs/intro/tutorial04.rst
 create mode 100644 gcc/jit/docs/topics/contexts.rst
 create mode 100644 gcc/jit/docs/topics/expressions.rst
 create mode 100644 gcc/jit/docs/topics/functions.rst
 create mode 100644 gcc/jit/docs/topics/index.rst
 create mode 100644 gcc/jit/docs/topics/locations.rst
 create mode 100644 gcc/jit/docs/topics/objects.rst
 create mode 100644 gcc/jit/docs/topics/results.rst
 create mode 100644 gcc/jit/docs/topics/types.rst
 create mode 100644 gcc/jit/dummy-frontend.c
 create mode 100644 gcc/jit/jit-builtins.c
 create mode 100644 gcc/jit/jit-builtins.h
 create mode 100644 gcc/jit/jit-common.h
 create mode 100644 gcc/jit/jit-playback.c
 create mode 100644 gcc/jit/jit-playback.h
 create mode 100644 gcc/jit/jit-recording.c
 create mode 100644 gcc/jit/jit-recording.h
 create mode 100644 gcc/jit/libgccjit++.h
 create mode 100644 gcc/jit/libgccjit.c
 create mode 100644 gcc/jit/libgccjit.h
 create mode 100644 gcc/jit/libgccjit.map
 create mode 100644 gcc/jit/notes.txt
 create mode 100644 gcc/testsuite/ChangeLog.jit
 create mode 100644 gcc/testsuite/jit.dg/all-non-failing-tests.h
 create mode 100644 gcc/testsuite/jit.dg/harness.h
 create mode 100644 gcc/testsuite/jit.dg/jit.exp
 create mode 100644 gcc/testsuite/jit.dg/test-accessing-struct.c
 create mode 100644 gcc/testsuite/jit.dg/test-accessing-union.c
 create mode 100644 gcc/testsuite/jit.dg/test-array-as-pointer.c
 create mode 100644 gcc/testsuite/jit.dg/test-arrays.c
 create mode 100644 gcc/testsuite/jit.dg/test-calling-external-function.c
 create mode 100644 gcc/testsuite/jit.dg/test-calling-function-ptr.c
 create mode 100644 gcc/testsuite/jit.dg/test-combination.c
 create mode 100644 gcc/testsuite/jit.dg/test-dot-product.c
 create mode 100644 gcc/testsuite/jit.dg/test-empty.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-accessing-field-in-other-struct.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-adding-to-terminated-block.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-array-as-pointer.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-bad-cast.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-block-in-wrong-function.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-call-through-ptr-with-mismatching-args.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-call-through-ptr-with-non-function.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-call-through-ptr-with-non-pointer.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-call-through-ptr-with-not-enough-args.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-call-through-ptr-with-too-many-args.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-call-with-mismatching-args.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-call-with-not-enough-args.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-call-with-too-many-args.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-dereference-field-of-non-pointer.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-dereference-read-of-non-pointer.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-index-not-a-numeric-type.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-mismatching-types-in-assignment.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-mismatching-types-in-call.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-missing-return.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-null-passed-to-api.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-return-within-void-function.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-unreachable-block.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-unterminated-block.c
 create mode 100644 gcc/testsuite/jit.dg/test-error-value-not-a-numeric-type.c
 create mode 100644 gcc/testsuite/jit.dg/test-expressions.c
 create mode 100644 gcc/testsuite/jit.dg/test-factorial.c
 create mode 100644 gcc/testsuite/jit.dg/test-fibonacci.c
 create mode 100644 gcc/testsuite/jit.dg/test-functions.c
 create mode 100644 gcc/testsuite/jit.dg/test-fuzzer.c
 create mode 100644 gcc/testsuite/jit.dg/test-hello-world.c
 create mode 100644 gcc/testsuite/jit.dg/test-linked-list.c
 create mode 100644 gcc/testsuite/jit.dg/test-long-names.c
 create mode 100644 gcc/testsuite/jit.dg/test-nested-contexts.c
 create mode 100644 gcc/testsuite/jit.dg/test-nested-loops.c
 create mode 100644 gcc/testsuite/jit.dg/test-operator-overloading.cc
 create mode 100644 gcc/testsuite/jit.dg/test-quadratic.c
 create mode 100644 gcc/testsuite/jit.dg/test-quadratic.cc
 create mode 100644 gcc/testsuite/jit.dg/test-reading-struct.c
 create mode 100644 gcc/testsuite/jit.dg/test-string-literal.c
 create mode 100644 gcc/testsuite/jit.dg/test-sum-of-squares.c
 create mode 100644 gcc/testsuite/jit.dg/test-threads.c
 create mode 100644 gcc/testsuite/jit.dg/test-types.c
 create mode 100644 gcc/testsuite/jit.dg/test-using-global.c
 create mode 100644 gcc/testsuite/jit.dg/test-volatile.c
 create mode 100644 include/ChangeLog.jit
 create mode 100644 libbacktrace/ChangeLog.jit
 create mode 100644 libcpp/ChangeLog.jit
 create mode 100644 libdecnumber/ChangeLog.jit
 create mode 100644 libiberty/ChangeLog.jit
 create mode 100644 zlib/ChangeLog.jit

-- 
1.8.5.3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]