https://github.com/jeanPerier created https://github.com/llvm/llvm-project/pull/124110
Add the `-fno` form for consistency and to make it easy to switch the default for downstream users. >From 28dba56b12b45f8ce82426e2b79165352f549850 Mon Sep 17 00:00:00 2001 From: Jean Perier <jper...@nvidia.com> Date: Thu, 23 Jan 2025 04:37:30 -0800 Subject: [PATCH] [flang][driver] add negative from of -fsave-main-program --- clang/include/clang/Driver/Options.td | 4 ++-- clang/lib/Driver/ToolChains/Flang.cpp | 3 ++- flang/lib/Frontend/CompilerInvocation.cpp | 9 +++++---- flang/test/Driver/fsave-main-program.f90 | 6 +++++- flang/test/Lower/fsave-main-program.f90 | 1 + 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index df705104d9ea31..6fface303c57a6 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -6968,8 +6968,8 @@ defm unsigned : OptInFC1FFlag<"unsigned", "Enables UNSIGNED type">; def fno_automatic : Flag<["-"], "fno-automatic">, Group<f_Group>, HelpText<"Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE">; -def fsave_main_program : Flag<["-"], "fsave-main-program">, Group<f_Group>, - HelpText<"Place all variables from the main program in static memory (otherwise scalars may be placed on the stack)">; +defm save_main_program : OptInFC1FFlag<"save-main-program", + "Place all variables from the main program in static memory (otherwise scalars may be placed on the stack)">; defm stack_arrays : BoolOptionWithoutMarshalling<"f", "stack-arrays", PosFlag<SetTrue, [], [ClangOption], "Attempt to allocate array temporaries on the stack, no matter their size">, diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp index 9c1fd28a3a8a26..8d1ec016325dfb 100644 --- a/clang/lib/Driver/ToolChains/Flang.cpp +++ b/clang/lib/Driver/ToolChains/Flang.cpp @@ -58,7 +58,8 @@ void Flang::addFortranDialectOptions(const ArgList &Args, options::OPT_fhermetic_module_files, options::OPT_frealloc_lhs, options::OPT_fno_realloc_lhs, - options::OPT_fsave_main_program}); + options::OPT_fsave_main_program, + options::OPT_fno_save_main_program}); } void Flang::addPreprocessingOptions(const ArgList &Args, diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp index 3c6da4687f65d3..68b5950d3a51b7 100644 --- a/flang/lib/Frontend/CompilerInvocation.cpp +++ b/flang/lib/Frontend/CompilerInvocation.cpp @@ -770,10 +770,11 @@ static bool parseFrontendArgs(FrontendOptions &opts, llvm::opt::ArgList &args, opts.features.Enable(Fortran::common::LanguageFeature::DefaultSave); } - // -fsave-main-program - if (args.hasArg(clang::driver::options::OPT_fsave_main_program)) { - opts.features.Enable(Fortran::common::LanguageFeature::SaveMainProgram); - } + // -f{no}-save-main-program + opts.features.Enable( + Fortran::common::LanguageFeature::SaveMainProgram, + args.hasFlag(clang::driver::options::OPT_fsave_main_program, + clang::driver::options::OPT_fno_save_main_program, false)); if (args.hasArg( clang::driver::options::OPT_falternative_parameter_statement)) { diff --git a/flang/test/Driver/fsave-main-program.f90 b/flang/test/Driver/fsave-main-program.f90 index bffdfd97911e80..e7a2f9d8b470ed 100644 --- a/flang/test/Driver/fsave-main-program.f90 +++ b/flang/test/Driver/fsave-main-program.f90 @@ -1,5 +1,9 @@ ! Check that the driver passes through -fsave-main-program: ! RUN: %flang -### -S -fsave-main-program %s -o - 2>&1 | FileCheck %s +! CHECK: "-fc1"{{.*}}"-fsave-main-program" + +! RUN: %flang -### -S -fno-save-main-program %s -o - 2>&1 | FileCheck %s --check-prefix=CHECK2 +! CHECK2: "-fc1"{{.*}}"-fno-save-main-program" + ! Check that the compiler accepts -fsave-main-program: ! RUN: %flang_fc1 -emit-hlfir -fsave-main-program %s -o - -! CHECK: "-fc1"{{.*}}"-fsave-main-program" diff --git a/flang/test/Lower/fsave-main-program.f90 b/flang/test/Lower/fsave-main-program.f90 index 17fc1b02f5068f..e89244c3c7c51a 100644 --- a/flang/test/Lower/fsave-main-program.f90 +++ b/flang/test/Lower/fsave-main-program.f90 @@ -1,6 +1,7 @@ ! Test -fsave-main-program switch. ! RUN: %flang_fc1 -emit-hlfir -o - %s | FileCheck --check-prefix=CHECK-DEFAULT %s ! RUN: %flang_fc1 -fsave-main-program -emit-hlfir -o - %s | FileCheck --check-prefix=CHECK-SAVE %s +! RUN: %flang_fc1 -fsave-main-program -fno-save-main-program -emit-hlfir -o - %s | FileCheck --check-prefix=CHECK-DEFAULT %s program test integer :: i call foo(i) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits