[flang][driver] add negative from of -fsave-main-program (#124110)
Add the `-fno` form for consistency and to make it easy to switch the default for downstream users.
This commit is contained in:
@@ -6970,8 +6970,11 @@ 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 : BoolOptionWithoutMarshalling<"f", "save-main-program",
|
||||
PosFlag<SetTrue, [], [],
|
||||
"Place all main program variables in static memory (otherwise scalars may be placed on the stack)">,
|
||||
NegFlag<SetFalse, [], [],
|
||||
"Allow placing main program variables on the stack (default)">>;
|
||||
|
||||
defm stack_arrays : BoolOptionWithoutMarshalling<"f", "stack-arrays",
|
||||
PosFlag<SetTrue, [], [ClangOption], "Attempt to allocate array temporaries on the stack, no matter their size">,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user