> On Sun, Oct 12, 2025 at 12:41 PM Jose E. Marchesi
> <[email protected]> wrote:
>>
>> This commit adds a new common command-line option to the compiler
>> driver (-static-libga68) as well as several other front-end specific
>> options.
>>
>> Signed-off-by: Jose E. Marchesi <[email protected]>
>
> LGTM, some bikeshedding below.
>
>> gcc/ChangeLog
>>
>>         * algol68/lang.opt: New file.
>>         * algol68/lang.opt.urls: Generate.
>>         * common.opt: New option -static-libga68.
>>         * common.opt.urls: Generate.
>>         * gcc.cc: Handle OPT_static_libga68.
>>         * regenerate-opt-urls.py (PER_LANGUAGE_OPTION_INDEXES): Add Algol68.
>> ---
>>  gcc/algol68/lang.opt       | 122 +++++++++++++++++++++++++++++++++++++
>>  gcc/algol68/lang.opt.urls  |  41 +++++++++++++
>>  gcc/common.opt             |   3 +
>>  gcc/common.opt.urls        |   3 +
>>  gcc/gcc.cc                 |   2 +
>>  gcc/regenerate-opt-urls.py |   3 +-
>>  6 files changed, 173 insertions(+), 1 deletion(-)
>>  create mode 100644 gcc/algol68/lang.opt
>>  create mode 100644 gcc/algol68/lang.opt.urls
>>
>> diff --git a/gcc/algol68/lang.opt b/gcc/algol68/lang.opt
>> new file mode 100644
>> index 00000000000..bbc0a06a530
>> --- /dev/null
>> +++ b/gcc/algol68/lang.opt
>> @@ -0,0 +1,122 @@
>> +; Options for the Algol 68 front end.
>> +; Copyright (C) 2025 Free Software Foundation, Inc.
>> +;
>> +; GCC is free software; you can redistribute it and/or modify it under
>> +; the terms of the GNU General Public License as published by the Free
>> +; Software Foundation; either version 3, or (at your option) any later
>> +; version.
>> +;
>> +; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
>> +; WARRANTY; without even the implied warranty of MERCHANTABILITY or
>> +; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
>> +; for more details.
>> +;
>> +; You should have received a copy of the GNU General Public License
>> +; along with GCC; see the file COPYING3.  If not see
>> +; <http://www.gnu.org/licenses/>.
>> +
>> +; See the GCC internals manual for a description of this file's format.
>> +
>> +; Please try to keep this file in ASCII collating order.
>> +
>> +; Describes command-line options used by this frontend
>> +
>> +Language
>> +Algol68
>> +
>> +I
>> +Algol68 Joined Separate
>> +; Documented in c-family/c.opt
>> +
>> +Wextensions
>> +Algol68 Warning Var(warn_algol68_extensions) LangEnabledBy(Algol68, Wextra)
>> +Warn for usage of non-portable extensions of Algol 68.
>> +
>> +Wvoiding
>> +Algol68 Warning Var(warn_algol68_voiding) LangEnabledBy(Algol68, Wextra)
>> +Warn when voiding occurs.
>> +
>> +Wextra
>> +Algol68 Warning
>> +; Documented in common.opt
>> +
>> +Wscope
>> +Algol68 Warning Var(warn_algol68_scope)
>> +Warn for potential name scope violations.
>> +
>> +Whidden-declarations
>> +Algol68 Warning Var(warn_algol68_hidden_declarations)
>> +Warn for hidden declarations in inner scopes.
>> +
>> +fa68-safe
>> +Algol68 Var(flag_a68_safe)
>> +-fa68-safe             Compile code only known to be memory safe.
>> +
>> +fa68-safe-bounds
>> +Algol68 Var(flag_a68_safe_bounds)
>> +-fa68-safe-bounds      Error out if not all bounds are known to be legal.
>> +
>
> Since users know they are working with algol68, is prefixing
> with 'a68-' really necessary?  I don't think there's precedence for this
> in other frontends.

It isn't necessary, and in fact it is much better without the prefix.

Will change the backend to _consistently_ use options with no prefix of
any kind.

Thanks!

>> +fa68-brackets
>> +Algol68 Var(flag_a68_brackets)
>> +-fa68-brackets         Consider [ .. ] and { .. } as being equivalent to ( 
>> .. ).
>> +
>> +fa68-debug
>> +Algol68 Var(flag_a68_debug)
>> +-fa68-debug            Enable debugging traces of the Algol 68 front end.
>> +
>> +fa68-portcheck
>> +Algol68 Var(flag_a68_portcheck)
>> +-fa68-portcheck         Emit portability warnings.
>> +
>> +fa68-assert
>> +Algol68 Var(flag_a68_assert)
>> +Generate code for ASSERT constructs.
>> +
>> +fa68-nil-checking
>> +Algol68 Var(flag_a68_nil_checking)
>> +Generate code to perform NIL checking while dereferencing.
>> +
>> +fa68-bounds-checking
>> +Algol68 Var(flag_a68_bounds_checking)
>> +Generate code to perform run-time bounds checking on array accesses.
>> +
>> +fdump-algol68-modes
>
> ... and here we're using 'algol68' instead of 'a68'.
>
>> +Algol68 Var(flag_dump_algol68_modes)
>> +Dump Algol 68 modes after parsing.
>> +
>> +fdump-algol68-tree
>> +Algol68 Var(flag_dump_algol68_tree)
>> +Dump Algol 68 parse tree after parsing.
>> +
>> +static-libga68
>> +Driver
>> +Link the GNU Algol run-time library statically in the compilation.
>> +
>> +shared-libga68
>> +Driver
>> +Link the GNU Algol 68 run-time library dynamically in the compilation.
>> +
>> +std=algol68
>> +Algol68
>> +Conform to the Algol 68 Revised Report
>> +
>> +std=gnu68
>> +Algol68
>> +Accept GNU extensions to Algol 68
>> +
>> +; Stropping regimes.
>> +
>> +fstropping=
>> +Algol68 Joined RejectNegative Enum(stropping_regime) 
>> Var(flag_stropping_regime)
>> +-fstropping=[upper|supper]              Stropping regime to expect in Algol 
>> 68 programs.
>
> and this is without a 'a68-' prefix.
>
> Richard.
>
>> +
>> +Enum
>> +Name(stropping_regime) Type(int) UnknownError(unknown stropping_regime 
>> setting %qs)
>> +
>> +EnumValue
>> +Enum(stropping_regime) String(upper) Value(0)
>> +
>> +EnumValue
>> +Enum(stropping_regime) String(supper) Value(1)
>> +
>> +; This comment is to ensure we retain the blank line above.
>> diff --git a/gcc/algol68/lang.opt.urls b/gcc/algol68/lang.opt.urls
>> new file mode 100644
>> index 00000000000..3eb2fd0cc61
>> --- /dev/null
>> +++ b/gcc/algol68/lang.opt.urls
>> @@ -0,0 +1,41 @@
>> +; Autogenerated by regenerate-opt-urls.py from gcc/algol68/lang.opt and 
>> generated HTML
>> +
>> +I
>> +UrlSuffix(gcc/Directory-Options.html#index-I) 
>> LangUrlSuffix_D(gdc/Directory-Options.html#index-I) 
>> LangUrlSuffix_Algol68(ga68/Directory-options.html#index-I)
>> +
>> +Wextensions
>> +LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wextensions)
>> +
>> +Wvoiding
>> +LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wno-voiding)
>> +
>> +Wextra
>> +UrlSuffix(gcc/Warning-Options.html#index-Wextra) 
>> LangUrlSuffix_D(gdc/Warnings.html#index-Wextra) 
>> LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wextra)
>> +
>> +Wscope
>> +LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wno-scope)
>> +
>> +Whidden-declarations
>> +LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Whidden-declarations)
>> +
>> +fa68-assert
>> +LangUrlSuffix_Algol68(ga68/Runtime-options.html#index-fa68-assert)
>> +
>> +fa68-nil-checking
>> +LangUrlSuffix_Algol68(ga68/Runtime-options.html#index-fa68-nil-checking)
>> +
>> +fa68-bounds-checking
>> +LangUrlSuffix_Algol68(ga68/Runtime-options.html#index-fa68-bounds-checking)
>> +
>> +fdump-algol68-modes
>> +LangUrlSuffix_Algol68(ga68/Developer-options.html#index-fdump-algol68-modes)
>> +
>> +fdump-algol68-tree
>> +LangUrlSuffix_Algol68(ga68/Developer-options.html#index-fdump-algol68-tree)
>> +
>> +static-libga68
>> +LangUrlSuffix_Algol68(ga68/Linking-options.html#index-static-libga68)
>> +
>> +shared-libga68
>> +LangUrlSuffix_Algol68(ga68/Linking-options.html#index-shared-libga68)
>> +
>> diff --git a/gcc/common.opt b/gcc/common.opt
>> index 6c993a8a6d3..cb69b07cab9 100644
>> --- a/gcc/common.opt
>> +++ b/gcc/common.opt
>> @@ -3964,6 +3964,9 @@ Driver Joined
>>  static
>>  Driver
>>
>> +static-libga68
>> +Driver
>> +
>>  static-libgcc
>>  Driver
>>
>> diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls
>> index ab6b4316df9..4619aac2855 100644
>> --- a/gcc/common.opt.urls
>> +++ b/gcc/common.opt.urls
>> @@ -1931,6 +1931,9 @@ UrlSuffix(gcc/Overall-Options.html#index-specs)
>>  ;   duplicate: 'gcc/Darwin-Options.html#index-static-1'
>>  ;   duplicate: 'gcc/Link-Options.html#index-static'
>>
>> +static-libga68
>> +LangUrlSuffix_Algol68(ga68/Linking-options.html#index-static-libga68)
>> +
>>  static-libgcc
>>  UrlSuffix(gcc/Link-Options.html#index-static-libgcc)
>>
>> diff --git a/gcc/gcc.cc b/gcc/gcc.cc
>> index eae7f07d962..540958de797 100644
>> --- a/gcc/gcc.cc
>> +++ b/gcc/gcc.cc
>> @@ -4645,11 +4645,13 @@ driver_handle_option (struct gcc_options *opts,
>>      case OPT_static_libgfortran:
>>      case OPT_static_libquadmath:
>>      case OPT_static_libphobos:
>> +    case OPT_static_libga68:
>>      case OPT_static_libgm2:
>>      case OPT_static_libstdc__:
>>        /* These are always valid; gcc.cc itself understands the first two
>>          gfortranspec.cc understands -static-libgfortran,
>>          libgfortran.spec handles -static-libquadmath,
>> +        a68spec.cc understands -static-libga68,
>>          d-spec.cc understands -static-libphobos,
>>          gm2spec.cc understands -static-libgm2,
>>          and g++spec.cc understands -static-libstdc++.  */
>> diff --git a/gcc/regenerate-opt-urls.py b/gcc/regenerate-opt-urls.py
>> index 2daa1d603f0..bda91905ace 100755
>> --- a/gcc/regenerate-opt-urls.py
>> +++ b/gcc/regenerate-opt-urls.py
>> @@ -361,7 +361,8 @@ def write_url_file(index, optfile, dstfile):
>>  PER_LANGUAGE_OPTION_INDEXES = [
>>      ('gcc/Option-Index.html', None),
>>      ('gdc/Option-Index.html', 'D'),
>> -    ('gfortran/Option-Index.html', 'Fortran')
>> +    ('gfortran/Option-Index.html', 'Fortran'),
>> +    ('ga68/Option-Index.html', 'Algol68'),
>>  ]
>>
>>  def main(args):
>> --
>> 2.30.2
>>

Reply via email to