From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30939 invoked by alias); 13 Oct 2014 17:39:09 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 30918 invoked by uid 89); 13 Oct 2014 17:39:08 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=2.9 required=5.0 tests=AWL,BAYES_00,SPAM_URI1,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 13 Oct 2014 17:39:06 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s9DHd5wx031694 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 13 Oct 2014 13:39:05 -0400 Received: from c64.redhat.com (vpn-234-125.phx2.redhat.com [10.3.234.125]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s9DHd4lq002861; Mon, 13 Oct 2014 13:39:04 -0400 From: David Malcolm To: jit@gcc.gnu.org, gcc-patches@gcc.gnu.org Cc: David Malcolm Subject: [PATCH 0/5] Merger of jit branch (v2) Date: Mon, 13 Oct 2014 17:39:00 -0000 Message-Id: <1413222308-25753-1-git-send-email-dmalcolm@redhat.com> X-IsSubscribed: yes X-SW-Source: 2014-10/txt/msg01169.txt.bz2 I'd like to merge the JIT branch into trunk: https://gcc.gnu.org/wiki/JIT This is "v2" since it incorporates fixes for the various issues identified by Joseph in an earlier submission: https://gcc.gnu.org/ml/gcc-patches/2014-09/msg02056.html I've split up the current diff between trunk and the branch into 5 areas for ease of review (and to allow for early merger of the supporting work, if it's deemed ready): patch 1: exposes an entrypoint in libiberty that I need patch 2: configure and Makefile changes in "gcc" patch 3: timevar.h: Add an auto_timevar class patch 4: State cleanups in "gcc" patch 5: Add the "jit" code itself [this is a diff of trunk r215958 aka e012cdc775868e9922f5fef9068a764546876d93 which is from 2014-10-06, vs jit branch version 75b3ee7acdc6de55354d65bb7d619386463e50a1]. 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). 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? Overall diffstat follows: ChangeLog.jit | 23 + MAINTAINERS | 1 + contrib/ChangeLog.jit | 14 + contrib/jit-coverage-report.py | 67 + gcc/ChangeLog.jit | 323 + gcc/Makefile.in | 9 + gcc/cgraph.c | 14 + gcc/cgraph.h | 6 + gcc/cgraphunit.c | 20 +- gcc/configure | 54 +- gcc/configure.ac | 11 + gcc/diagnostic.c | 11 +- gcc/doc/install.texi | 2 +- gcc/dwarf2out.c | 87 + gcc/dwarf2out.h | 2 + gcc/gcse.c | 9 + gcc/gcse.h | 2 + gcc/ggc-page.c | 5 + gcc/input.c | 2 +- gcc/ipa-cp.c | 12 + gcc/ipa-pure-const.c | 113 +- gcc/ipa-reference.c | 17 +- gcc/ipa-reference.h | 1 + gcc/java/ChangeLog.jit | 14 + gcc/jit/ChangeLog | 9 + gcc/jit/ChangeLog.jit | 3252 ++++++++++ gcc/jit/Make-lang.in | 297 + gcc/jit/TODO.rst | 119 + gcc/jit/config-lang.in | 42 + 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 | 6724 ++++++++++++++++++++ gcc/jit/docs/_build/texinfo/sum-of-squares.png | Bin 0 -> 22839 bytes gcc/jit/docs/conf.py | 258 + gcc/jit/docs/examples/install-hello-world.c | 123 + gcc/jit/docs/examples/tut01-square.c | 107 + gcc/jit/docs/examples/tut02-sum-of-squares.c | 172 + gcc/jit/docs/examples/tut03-toyvm/Makefile | 11 + gcc/jit/docs/examples/tut03-toyvm/factorial.toy | 50 + gcc/jit/docs/examples/tut03-toyvm/fibonacci.toy | 66 + gcc/jit/docs/examples/tut03-toyvm/toyvm.c | 861 +++ gcc/jit/docs/index.rst | 50 + gcc/jit/docs/internals/index.rst | 157 + gcc/jit/docs/intro/factorial.png | Bin 0 -> 183838 bytes gcc/jit/docs/intro/index.rst | 27 + gcc/jit/docs/intro/install.rst | 227 + gcc/jit/docs/intro/sum-of-squares.png | Bin 0 -> 22839 bytes gcc/jit/docs/intro/tutorial01.rst | 349 + gcc/jit/docs/intro/tutorial02.rst | 378 ++ gcc/jit/docs/intro/tutorial03.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 | 248 + gcc/jit/jit-builtins.c | 424 ++ gcc/jit/jit-builtins.h | 114 + gcc/jit/jit-common.h | 182 + gcc/jit/jit-playback.c | 2098 ++++++ gcc/jit/jit-playback.h | 564 ++ gcc/jit/jit-recording.c | 3415 ++++++++++ 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/libgccjit.pc.in | 11 + gcc/jit/notes.txt | 84 + gcc/main.c | 6 +- gcc/params.c | 14 + gcc/params.h | 4 + gcc/passes.c | 6 + gcc/stringpool.c | 5 + gcc/testsuite/ChangeLog.jit | 601 ++ gcc/testsuite/jit.dg/all-non-failing-tests.h | 166 + gcc/testsuite/jit.dg/harness.h | 242 + gcc/testsuite/jit.dg/jit.exp | 259 + 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.c | 3 + gcc/timevar.def | 6 + gcc/timevar.h | 24 + gcc/toplev.c | 67 +- gcc/toplev.h | 19 +- include/ChangeLog.jit | 11 + include/libiberty.h | 5 + libbacktrace/ChangeLog.jit | 14 + libcpp/ChangeLog.jit | 22 + libdecnumber/ChangeLog.jit | 22 + libiberty/ChangeLog.jit | 23 + libiberty/choose-temp.c | 1 - libiberty/functions.texi | 13 +- libiberty/make-temp-file.c | 4 +- zlib/ChangeLog.jit | 22 + 150 files changed, 39206 insertions(+), 87 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/install-hello-world.c create mode 100644 gcc/jit/docs/examples/tut01-square.c create mode 100644 gcc/jit/docs/examples/tut02-sum-of-squares.c create mode 100644 gcc/jit/docs/examples/tut03-toyvm/Makefile create mode 100644 gcc/jit/docs/examples/tut03-toyvm/factorial.toy create mode 100644 gcc/jit/docs/examples/tut03-toyvm/fibonacci.toy create mode 100644 gcc/jit/docs/examples/tut03-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/install.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/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/libgccjit.pc.in 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