From: Iain Sandoe Date: Thu, 26 Jan 2023 13:49:11 +0000 (+0000) Subject: Modula-2: Add claimed command line options to lang.opt [PR108555]. X-Git-Tag: upstream/13.1.0~1818 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=83979240c072599bc8595a9324c3f4371eedbc7c;p=platform%2Fupstream%2Fgcc.git 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 --git a/gcc/m2/gm2-lang.cc b/gcc/m2/gm2-lang.cc index a30e626..999c57c 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 6228c3c..65004e1 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 43d6ba5..ab4ea55 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.