Difference between revisions of "GDC/GCCSubmission"

From D Wiki
Jump to: navigation, search
m (Patch Approval Status)
m
 
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{ParentArticle| [[GDC]]}}
 
{{ParentArticle| [[GDC]]}}
 +
 +
'''UPDATE: GDC has been [https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=265573 committed] to GCC.  This page is now obsolete.'''
  
 
Since the [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02108.html initial submission] of the D front-end to GCC, this aims to keep a record of the current status of both policy and technical review.
 
Since the [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02108.html initial submission] of the D front-end to GCC, this aims to keep a record of the current status of both policy and technical review.
Line 13: Line 15:
 
  |-
 
  |-
 
  | 001
 
  | 001
  | [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02122.html v1]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02122.html v1] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00932.html v4]
 
  | The front-end (DMD) language implementation and license.
 
  | The front-end (DMD) language implementation and license.
  | Pending
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00582.html Under Review] (FSF approved for inclusion)
 
  |-
 
  |-
 
  | 002
 
  | 002
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01847.html v2]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01847.html v2] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00933.html v4]
 
  | The front-end (GDC) implementation.
 
  | The front-end (GDC) implementation.
  | Under Review
+
  | [https://gcc.gnu.org/ml/gcc-patches/2018-10/msg01432.html Approved] (v4)
 
  |-
 
  |-
 
  | 003
 
  | 003
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01848.html v2]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01848.html v2] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00934.html v4]
 
  | The front-end (GDC) changelogs.
 
  | The front-end (GDC) changelogs.
  | Pending
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00734.html Approved] (v2)
 
  |-
 
  |-
 
  | 004
 
  | 004
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01849.html v2]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01849.html v2] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00935.html v4]
 
  | The front-end (GDC) config, makefile, and manpages.
 
  | The front-end (GDC) config, makefile, and manpages.
  | Pending
+
  | [https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00928.html Approved After Fixes] (v2)
 
  |-
 
  |-
 
  | 005
 
  | 005
  | [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02131.html v1]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02131.html v1] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00936.html v4]
 
  | GCC configuration file changes and documentation.
 
  | GCC configuration file changes and documentation.
  | Pending
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00592.html Assume Approved] (v2)
 
  |-
 
  |-
 
  | 006
 
  | 006
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01850.html v2]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01850.html v2] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00937.html v4]
 
  | Add D language support to GCC proper.
 
  | Add D language support to GCC proper.
  | Pending
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00609.html Assume Approved] (v2)
 
  |-
 
  |-
 
  | 007
 
  | 007
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01851.html v2]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01851.html v2] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00938.html v4]
 
  | Add D language support to GCC targets.
 
  | Add D language support to GCC targets.
  | Pending
+
  | [https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00955.html Approved After Fixes] (v4)
 
  |-
 
  |-
 
  | 008
 
  | 008
  | [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02140.html v1]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02140.html v1] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00939.html v4]
 
  | D2 Testsuite tests.
 
  | D2 Testsuite tests.
  | Pending
+
  | [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg01270.html Approved] (v4)
 
  |-
 
  |-
 
  | 009
 
  | 009
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01852.html v2]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01852.html v2] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00940.html v4]
 
  | D2 Testsuite Dejagnu files.
 
  | D2 Testsuite Dejagnu files.
  | Approved
+
  | [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg01264.html Approved] (v4)
 
  |-
 
  |-
 
  | 010
 
  | 010
  | [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02138.html v1]
+
| [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00941.html v4]
 +
| GDC Testsuite files
 +
| [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg01269.html Approved] (v4)
 +
|-
 +
| 011
 +
  | [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02138.html v1] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00942.html v4]
 
  | The D runtime library and license.
 
  | The D runtime library and license.
  | Pending
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00029.html Under Review] (FSF approved for inclusion)
 
  |-
 
  |-
  | 011
+
  | 012
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01853.html v2]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01853.html v2] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00943.html v4]
 
  | GCC builtins and runtime support (part of D runtime)
 
  | GCC builtins and runtime support (part of D runtime)
  | Under Review
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00735.html Assume Approved] (v2)
 
  |-
 
  |-
  | 012
+
  | 013
  | [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02139.html v1]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-05/msg02139.html v1] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00944.html v4]
 
  | The Phobos runtime library and license.
 
  | The Phobos runtime library and license.
  | Pending
+
  | [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg01268.html Under Review] (FSF approved for inclusion)
 
  |-
 
  |-
  | 013
+
  | 014
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01854.html v2]
+
  | [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01854.html v2] [https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00945.html v4]
 
  | Phobos config, makefiles, and testsuite.
 
  | Phobos config, makefiles, and testsuite.
  | Under Review
+
  | [https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00970.html Approved After Fixes] (v4)
 
|}
 
|}
  
Line 87: Line 94:
 
  | GCC steering committee approval of accepting the FE contribution and appointing a FE maintainer.
 
  | GCC steering committee approval of accepting the FE contribution and appointing a FE maintainer.
 
  | [https://gcc.gnu.org/ml/gcc/2017-06/msg00111.html Done]
 
  | [https://gcc.gnu.org/ml/gcc/2017-06/msg00111.html Done]
 +
|-
 +
| Does this stuff get bound into GCC?  The reason I ask is the files are under the Boost license with ownership by Digital Mars.  While we often have a fair amount of leeway with runtime systems, we may not have the same kind of license/ownership leeway with things that are actually part of the compiler itself.  Did the discussions between the FSF, Digital Mars and Walter touch in these issues at all?  Have you received any guidance from the parties on this issue?
 +
| Done
 +
| Contacted Richard Stallman, there is no problem with including the DMD sources as-is (now copyright D Language Foundation).  Same goes for the D runtime and Phobos libraries.
 
  |-
 
  |-
 
  | Create a GDC svn/git branch on GCC for platform integration testing.
 
  | Create a GDC svn/git branch on GCC for platform integration testing.
Line 107: Line 118:
 
  |-
 
  |-
 
  | <code>Target::critsecsize</code> should have its code belonging to the <code>gcc/config/</code> configuration for each target as a target hook returning the required information, not in the D front end code.
 
  | <code>Target::critsecsize</code> should have its code belonging to the <code>gcc/config/</code> configuration for each target as a target hook returning the required information, not in the D front end code.
  | Needs Action
+
  | Done
 
  |
 
  |
 
* See [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01086.html list of changes] required to implement. [https://github.com/D-Programming-GDC/GDC/pull/500 GDC#500]
 
* See [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01086.html list of changes] required to implement. [https://github.com/D-Programming-GDC/GDC/pull/500 GDC#500]
 
* For the worst case (unsupported target), should set the target hook to default to returning a large enough buffer size, e.g: <code>64</code>.
 
* For the worst case (unsupported target), should set the target hook to default to returning a large enough buffer size, e.g: <code>64</code>.
 +
|-
 +
| Note we recently allowed generation of the dependency files even in the case some errors.  Please consider doing the same if it makes sense.  See the Sept change to c_common_finish.
 +
| Suggestion
 +
| Haven't looked into it.
 +
|-
 +
| How important are the environment variables to the existing user base? We generally try to avoid changing much behavior based on environment variables.  Can these be made command line options?
 +
| Done
 +
| DDOCFILE and D_IMPORT_PATH were undocumented and removed. [https://github.com/D-Programming-GDC/GDC/pull/619 GDC#619]
 +
|-
 +
| You probably want to review the #ifdefs you've got in here to make sure they're not supposed to be checked via #if or runtime checks (there's only a half-dozen or so): <code>STACK_GROWS_DOWNWARD</code>, <code>HAVE_LD_STATIC_DYNAMIC</code>, <code>HAVE_LD_STATIC_DYNAMIC</code>, <code>BIGGEST_FIELD_ALIGNMENT</code>, <code>ADJUST_FIELD_ALIGN</code>, <code>ENABLE_TREE_CHECKING</code>.
 +
| Done
 +
| Checked, and all are legitimate apart from <code>ENABLE_TREE_CHECKING</code>. [https://github.com/D-Programming-GDC/GDC/pull/530 GDC#530]
 +
|-
 +
| There are a couple of places that walk the AST in a quadratic fashion, these should be looked at and fixed.
 +
| Suggestion.
 +
| Bug report raised.
 
|}
 
|}
  
Line 121: Line 148:
 
  |-
 
  |-
 
  | Create a dmd-cxx git branch on dlang/dmd to host GDC's forked C++ front end sources.
 
  | Create a dmd-cxx git branch on dlang/dmd to host GDC's forked C++ front end sources.
  | Needs Action
+
  | Done
 
  |
 
  |
 
* Create a new branch based on dmd/2.068
 
* Create a new branch based on dmd/2.068
 
* Merge [https://github.com/dlang/dmd/tree/199b11cc15ee7fffc0cdc48fb1a6efec88c319c1 all changes] during 2.069 development up until the switch-over.
 
* Merge [https://github.com/dlang/dmd/tree/199b11cc15ee7fffc0cdc48fb1a6efec88c319c1 all changes] during 2.069 development up until the switch-over.
 
* Merge or cherry-pick in backports that have been applied on the GDC branch.
 
* Merge or cherry-pick in backports that have been applied on the GDC branch.
 +
|-
 +
| Add gdc devs to MAINTAINERS.
 +
| [https://gcc.gnu.org/ml/gcc-patches/2018-10/msg01464.html Done].
 +
| Patch submitted for [https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01855.html self].
 
|}
 
|}
  
 
[[Category:GDC Compiler]]
 
[[Category:GDC Compiler]]

Latest revision as of 22:15, 28 October 2018


UPDATE: GDC has been committed to GCC. This page is now obsolete.

Since the initial submission of the D front-end to GCC, this aims to keep a record of the current status of both policy and technical review.


Patch Approval Status

Patch Number Patch Version Patch Description Status
001 v1 v4 The front-end (DMD) language implementation and license. Under Review (FSF approved for inclusion)
002 v2 v4 The front-end (GDC) implementation. Approved (v4)
003 v2 v4 The front-end (GDC) changelogs. Approved (v2)
004 v2 v4 The front-end (GDC) config, makefile, and manpages. Approved After Fixes (v2)
005 v1 v4 GCC configuration file changes and documentation. Assume Approved (v2)
006 v2 v4 Add D language support to GCC proper. Assume Approved (v2)
007 v2 v4 Add D language support to GCC targets. Approved After Fixes (v4)
008 v1 v4 D2 Testsuite tests. Approved (v4)
009 v2 v4 D2 Testsuite Dejagnu files. Approved (v4)
010 v4 GDC Testsuite files Approved (v4)
011 v1 v4 The D runtime library and license. Under Review (FSF approved for inclusion)
012 v2 v4 GCC builtins and runtime support (part of D runtime) Assume Approved (v2)
013 v1 v4 The Phobos runtime library and license. Under Review (FSF approved for inclusion)
014 v2 v4 Phobos config, makefiles, and testsuite. Approved After Fixes (v4)

Change Requests Status

Change Request Change Status Change Notes
GCC steering committee approval of accepting the FE contribution and appointing a FE maintainer. Done
Does this stuff get bound into GCC? The reason I ask is the files are under the Boost license with ownership by Digital Mars. While we often have a fair amount of leeway with runtime systems, we may not have the same kind of license/ownership leeway with things that are actually part of the compiler itself. Did the discussions between the FSF, Digital Mars and Walter touch in these issues at all? Have you received any guidance from the parties on this issue? Done Contacted Richard Stallman, there is no problem with including the DMD sources as-is (now copyright D Language Foundation). Same goes for the D runtime and Phobos libraries.
Create a GDC svn/git branch on GCC for platform integration testing. Proposal Requires approval of the SC.
GCC-specific files in D runtime (gcc.builtins, etc) should have the GCC Runtime Library Exception notice. Done GDC#493
There appear to be various GPLv2 notices with old FSF addresses. Where those are on source files (as opposed to generated files), they should be updated to the usual GPLv3+ notice for GCC. Done GDC#493, GDC#495
DMD front end has functions with names such as error, but no useful i18n will actually occur because GDC formats the messages with xvasprintf before passing to the common diagnostic code. The DMD front end should be disabled, to prevent exgettext from extracting and putting messages in gcc.pot that won't actually be translated. Done
  • Add DMD sources to list of sources disabled for translation, GDC#499
  • Improve GDC diagnostic to use diagnostic_report_diagnostic() directly, GDC#497
Target::critsecsize should have its code belonging to the gcc/config/ configuration for each target as a target hook returning the required information, not in the D front end code. Done
  • See list of changes required to implement. GDC#500
  • For the worst case (unsupported target), should set the target hook to default to returning a large enough buffer size, e.g: 64.
Note we recently allowed generation of the dependency files even in the case some errors. Please consider doing the same if it makes sense. See the Sept change to c_common_finish. Suggestion Haven't looked into it.
How important are the environment variables to the existing user base? We generally try to avoid changing much behavior based on environment variables. Can these be made command line options? Done DDOCFILE and D_IMPORT_PATH were undocumented and removed. GDC#619
You probably want to review the #ifdefs you've got in here to make sure they're not supposed to be checked via #if or runtime checks (there's only a half-dozen or so): STACK_GROWS_DOWNWARD, HAVE_LD_STATIC_DYNAMIC, HAVE_LD_STATIC_DYNAMIC, BIGGEST_FIELD_ALIGNMENT, ADJUST_FIELD_ALIGN, ENABLE_TREE_CHECKING. Done Checked, and all are legitimate apart from ENABLE_TREE_CHECKING. GDC#530
There are a couple of places that walk the AST in a quadratic fashion, these should be looked at and fixed. Suggestion. Bug report raised.

Other Maintenance Tasks

Change Request Change Status Change Notes
Create a dmd-cxx git branch on dlang/dmd to host GDC's forked C++ front end sources. Done
  • Create a new branch based on dmd/2.068
  • Merge all changes during 2.069 development up until the switch-over.
  • Merge or cherry-pick in backports that have been applied on the GDC branch.
Add gdc devs to MAINTAINERS. Done. Patch submitted for self.