From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1698) id 83B783858C00; Fri, 27 Jan 2023 08:48:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 83B783858C00 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1674809332; bh=wLgoQmbjyzv7XUX3gdGzXn4ShswraAz/t+VnIg44kEM=; h=From:To:Subject:Date:From; b=VgrfL4Vf0GCt+EhxoazVrBEDC1NVNL3LvC7GM/7FTMhamjhUVd1vXj9a3vQoBHEHO tzyNf9uJul1hS/moHCEaLeRL4O1Z34n6TLefKittxdpFwqQEnNwLdpcN4I5JMKF8xY 3aSHUJdHbHmtDwC8Me5wnHszp7eCfA5VnJDR79sM= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Iain D Sandoe To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-5426] Modula-2: Add claimed command line options to lang.opt [PR108555]. X-Act-Checkin: gcc X-Git-Author: Iain Sandoe X-Git-Refname: refs/heads/master X-Git-Oldrev: d1e0575fdc9216f96c4f88f9f41a25b854300c0b X-Git-Newrev: 83979240c072599bc8595a9324c3f4371eedbc7c Message-Id: <20230127084852.83B783858C00@sourceware.org> Date: Fri, 27 Jan 2023 08:48:52 +0000 (GMT) List-Id: https://gcc.gnu.org/g:83979240c072599bc8595a9324c3f4371eedbc7c commit r13-5426-g83979240c072599bc8595a9324c3f4371eedbc7c Author: Iain Sandoe Date: Thu Jan 26 13:49:11 2023 +0000 Modula-2: Add claimed command line options to lang.opt [PR108555]. This is a partial reversion of the changes in r13-5373-g80cf2c5e8f496b. As observed in the PR, handling the C and Driver options in the Modula-2 lang-specific code could be difficult to emulate; This reverts to adding the required options to the language-specific .opt file. Signed-off-by: Iain Sandoe PR modula2/108555 PR modula2/108182 PR modula2/102343 gcc/m2/ChangeLog: * gm2-lang.cc (gm2_langhook_option_lang_mask): Do not claim CL_C or CL_DRIVER. (gm2_langhook_init_options): Handle options that we want to pass to the preprocessor. * lang-specs.h: Pass -B and -save-temps to regular compile lines. * lang.opt: Add C and Driver options that Modula-2 intercepts for internal use. Reorder options into two sections and to collate. Diff: --- gcc/m2/gm2-lang.cc | 53 +++++++-------- gcc/m2/lang-specs.h | 5 +- gcc/m2/lang.opt | 185 +++++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 177 insertions(+), 66 deletions(-) diff --git a/gcc/m2/gm2-lang.cc b/gcc/m2/gm2-lang.cc index a30e626620c..999c57c1cfa 100644 --- a/gcc/m2/gm2-lang.cc +++ b/gcc/m2/gm2-lang.cc @@ -137,9 +137,7 @@ gm2_langhook_init (void) static unsigned int gm2_langhook_option_lang_mask (void) { - /* We need to process some driver options and pass through some C - ones to build our preprocessing lines. */ - return CL_ModulaX2 | CL_C | CL_DRIVER; + return CL_ModulaX2; } /* Initialize the options structure. */ @@ -262,21 +260,22 @@ gm2_langhook_init_options (unsigned int decoded_options_count, For now skip all plugins to avoid fails with the m2 one. */ break; - /* Preprocessor arguments with a following filename. */ + /* Preprocessor arguments with a following filename, we add these + back to the main file preprocess line, but not to dependents + TODO Handle MF. */ case OPT_MD: + M2Options_SetMD (arg); + break; case OPT_MMD: - /* Save the filename associated with the MD/MMD which will also - mark the option as used. FIXME: maybe we should diagnose a - missing filename here, rather than assert. */ - gcc_checking_assert (i+1 < decoded_options_count); - gcc_checking_assert (decoded_options[i+1].opt_index - == OPT_SPECIAL_input_file); - /* Pick up the following filename. */ - arg = decoded_options[i+1].arg; - if (code == OPT_MD) - M2Options_SetMD (arg); - else - M2Options_SetMMD (arg); + M2Options_SetMMD (arg); + break; + + /* Modula 2 claimed options we pass to the preprocessor. */ + case OPT_ansi: + case OPT_traditional_cpp: + if (building_cpp_command) + M2Options_CppArg (opt, arg, (option->flags & CL_JOINED) + && !(option->flags & CL_SEPARATE)); break; /* Options we act on and also pass to the preprocessor. */ @@ -286,6 +285,12 @@ gm2_langhook_init_options (unsigned int decoded_options_count, M2Options_CppArg (opt, arg, (option->flags & CL_JOINED) && !(option->flags & CL_SEPARATE)); break; + case OPT_quiet: + M2Options_SetQuiet (value); + if (building_cpp_command) + M2Options_CppArg (opt, arg, (option->flags & CL_JOINED) + && !(option->flags & CL_SEPARATE)); + break; case OPT_v: M2Options_SetVerbose (value); /* FALLTHROUGH */ @@ -533,9 +538,6 @@ gm2_langhook_handle_option ( /* Otherwise, ignored, at least for now. */ return 1; break; - case OPT_quiet: - M2Options_SetQuiet (value); - return 1; case OPT_fm2_whole_program: M2Options_SetWholeProgram (value); return 1; @@ -557,20 +559,19 @@ gm2_langhook_handle_option ( } else return 0; - case OPT_o: - /* Options we ignore, always. */ - return 1; default: if (insideCppArgs) - /* Already handled. */ + /* Handled in gm2_langhook_init_options (). */ return 1; else if (option->flags & CL_DRIVER) - /* Ignore driver options we do not specifically use. */ + /* Driver options (unless specifically claimed above) should be handled + in gm2_langhook_init_options (). */ return 1; else if (option->flags & CL_C) - /* Ignore C options we do not specifically use. */ + /* C options (unless specifically claimed above) should be handled + in gm2_langhook_init_options (). */ return 1; - return 0; + break; } return 0; } diff --git a/gcc/m2/lang-specs.h b/gcc/m2/lang-specs.h index 6228c3c5dad..65004e1cabd 100644 --- a/gcc/m2/lang-specs.h +++ b/gcc/m2/lang-specs.h @@ -26,7 +26,7 @@ along with GCC; see the file COPYING3. If not see "%{E|M|MM|fcpp: %{E} -fcpp-begin " \ " %{!E:-E} %(cpp_unique_options) -traditional-cpp -ansi " \ " -fcpp-end %{B*} %{save-temps*} ; \ - : %{v} %I } " + : %{v} %I %{B*} %{save-temps*} } " /* We have three modes: 1. When the preprocessing step is explict and there is no following @@ -44,7 +44,8 @@ along with GCC; see the file COPYING3. If not see cc1gm2 " M2CPP " %{!fcpp:-fcpp;:%{fcpp}} %{I*} %i } \ %{!E:%{!M:%{!MM:\ cc1gm2 " M2CPP " %(cc1_options) %{I*} %i %{c} \ - %{MF*:%eto generate dependencies you must specify either '-M' or '-MM'} \ + %{!fcpp:%{MD|MMD|MF*: \ + %eto generate dependencies you must specify '-fcpp' }} \ %{!fsyntax-only:%(invoke_as)} \ }}}", 0, 0, 0}, {".m2i", "@modula-2-cpp-output", 0, 0, 0}, diff --git a/gcc/m2/lang.opt b/gcc/m2/lang.opt index 43d6ba56767..ab4ea5547eb 100644 --- a/gcc/m2/lang.opt +++ b/gcc/m2/lang.opt @@ -21,19 +21,15 @@ ; See the GCC internals manual for a description of this file's format. +; There are two sections: +; 1. Options specific to Modula-2 +; 2. Options shared with C or the Driver. +; Please keep any new additions for either case in the relevant section. ; Please try to keep this file in ASCII collating order. Language Modula-2 -Wall -Modula-2 -; Documented in c.opt - -Wpedantic -Modula-2 -; Documented in common.opt - Wpedantic-param-names Modula-2 compiler checks to force definition module procedure parameter names with their implementation module counterpart @@ -50,18 +46,6 @@ Wstyle Modula-2 extra compile time semantic checking, typically tries to catch poor programming style -Wunused-variable -Modula-2 -; Documented in c.opt - -Wunused-parameter -Modula-2 -; Documented in c.opt - -c -Modula-2 -; Documented in c.opt - fauto-init Modula-2 automatically initializes all pointers to NIL @@ -74,10 +58,6 @@ fcase Modula-2 turns on runtime checking to check whether a CASE statement requires an ELSE clause when on was not specified -fobjc-std=objc1 -Modula-2 -; Documented in c.opt - fcpp Modula-2 use cpp to preprocess the module @@ -118,10 +98,6 @@ fdump-system-exports Modula-2 display all inbuilt system items -fexceptions -Modula-2 -; Documented in common.opt - fextended-opaque Modula-2 allows opaque types to be implemented as any type (a GNU Modula-2 extension) @@ -202,10 +178,6 @@ fpositive-mod-floor-div Modula-2 force positive result from MOD and DIV result floor -fpreprocessed -Modula-2 -; Documented in c.opt - fpthread Modula-2 link against the pthread library (default on) @@ -282,16 +254,153 @@ fwholevalue Modula-2 turns on runtime checking to check whether a whole number is about to exceed range -;fworking-directory -;Modula-2 +static-libgm2 +Driver +Link the standard Modula-2 libraries statically in the compilation. + +; Here are C options that we also recognise, either within the compiler +; or to build the preprocessor command lines. + +Wall +Modula-2 ; Documented in c.opt -lang-asm +Wpedantic +Modula-2 +; Documented in common.opt + +Wunused-variable Modula-2 ; Documented in c.opt -static-libgm2 -Driver -Link the standard Modula-2 libraries statically in the compilation. +Wunused-parameter +Modula-2 +; Documented in c.opt + +B +Modula-2 +; Documented in c.opt + +D +Modula-2 +; Documented in c.opt + +E +Modula-2 +; Documented in c.opt + +I +Modula-2 Joined Separate +; Documented in c.opt + +L +Modula-2 Joined Separate +; Not documented + +M +Modula-2 +; Documented in c.opt + +MD +Modula-2 +; Documented in c.opt + +MF +Modula-2 +; Documented in c.opt + +MG +Modula-2 +; Documented in c.opt + +MM +Modula-2 +; Documented in c.opt + +MMD +Modula-2 +; Documented in c.opt + +Mmodules +Modula-2 +; Documented in c.opt + +Mno-modules +Modula-2 +; Documented in c.opt + +MP +Modula-2 +; Documented in c.opt + +MQ +Modula-2 +; Documented in c.opt + +MT +Modula-2 +; Documented in c.opt + +P +Modula-2 +; Documented in c.opt + +ansi +Modula-2 +; Documented in c.opt + +c +Modula-2 +; Documented in c.opt + +fexceptions +Modula-2 +; Documented in common.opt + +fobjc-std=objc1 +Modula-2 +; Documented in c.opt + +fpreprocessed +Modula-2 +; Documented in c.opt + +fworking-directory +Modula-2 +; Documented in c.opt + +iprefix +Modula-2 +; Documented in c.opt + +iquote +Modula-2 +; Documented in c.opt + +isystem +Modula-2 +; Documented in c.opt + +idirafter +Modula-2 +; Documented in c.opt + +imultilib +Modula-2 + +-save-temps +Modula-2 Alias(save-temps) + +save-temps +Modula-2 +save temporary preprocessed files + +save-temps= +Modula-2 Joined +save temporary preprocessed files + +traditional-cpp +Modula-2 +; Documented in c.opt ; This comment is to ensure we retain the blank line above.