victorkingi updated this revision to Diff 552330. victorkingi added a comment.
Minimalized patch to only have update to Options.td as well as tests accompanying the change. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D158507/new/ https://reviews.llvm.org/D158507 Files: clang/include/clang/Driver/Options.td flang/test/Driver/driver-help-hidden.f90 flang/test/Driver/driver-help.f90 flang/test/Driver/fomit-frame-pointer.f90 Index: flang/test/Driver/fomit-frame-pointer.f90 =================================================================== --- /dev/null +++ flang/test/Driver/fomit-frame-pointer.f90 @@ -0,0 +1,12 @@ +! Test no error emitted with 'fomit-frame-pointer' flag. + +! Test opt_record flags get generated for fc1 +! RUN: %flang -fomit-frame-pointer %s + +program forttest + implicit none + integer :: n + + n = 1 + +end program forttest Index: flang/test/Driver/driver-help.f90 =================================================================== --- flang/test/Driver/driver-help.f90 +++ flang/test/Driver/driver-help.f90 @@ -57,6 +57,7 @@ ! HELP-NEXT: -fno-stack-arrays Allocate array temporaries on the heap (default) ! HELP-NEXT: -fno-version-loops-for-stride ! HELP-NEXT: Do not create unit-strided loops (default) +! HELP-NEXT: -fomit-frame-pointer Omit the frame pointer from functions that don't need it. Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. On many targets, -O1 and higher omit the frame pointer by default. -m[no-]omit-leaf-frame-pointer takes precedence for leaf functions ! HELP-NEXT: -fopenacc Enable OpenACC ! HELP-NEXT: -fopenmp-target-debug Enable debugging in the OpenMP offloading device RTL ! HELP-NEXT: -fopenmp-targets=<value> @@ -219,6 +220,7 @@ ! HELP-FC1-NEXT: -load <dsopath> Load the named plugin (dynamic shared object) ! HELP-FC1-NEXT: -menable-no-infs Allow optimization to assume there are no infinities. ! HELP-FC1-NEXT: -menable-no-nans Allow optimization to assume there are no NaNs. +! HELP-FC1-NEXT: -mframe-pointer=<value> Specify which frame pointers to retain. ! HELP-FC1-NEXT: -mllvm <value> Additional arguments to forward to LLVM's option processing ! HELP-FC1-NEXT: -mmlir <value> Additional arguments to forward to MLIR's option processing ! HELP-FC1-NEXT: -module-dir <dir> Put MODULE files in <dir> Index: flang/test/Driver/driver-help-hidden.f90 =================================================================== --- flang/test/Driver/driver-help-hidden.f90 +++ flang/test/Driver/driver-help-hidden.f90 @@ -65,6 +65,7 @@ ! CHECK-NEXT: -fno-stack-arrays Allocate array temporaries on the heap (default) ! CHECK-NEXT: -fno-version-loops-for-stride ! CHECK-NEXT: Do not create unit-strided loops (default) +! CHECK-NEXT: -fomit-frame-pointer Omit the frame pointer from functions that don't need it. Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. On many targets, -O1 and higher omit the frame pointer by default. -m[no-]omit-leaf-frame-pointer takes precedence for leaf functions ! CHECK-NEXT: -fopenacc Enable OpenACC ! CHECK-NEXT: -fopenmp-assume-no-nested-parallelism ! CHECK-NEXT: Assert no nested parallel regions in the GPU Index: clang/include/clang/Driver/Options.td =================================================================== --- clang/include/clang/Driver/Options.td +++ clang/include/clang/Driver/Options.td @@ -3061,7 +3061,8 @@ def fno_objc_legacy_dispatch : Flag<["-"], "fno-objc-legacy-dispatch">, Group<f_Group>; def fno_objc_weak : Flag<["-"], "fno-objc-weak">, Group<f_Group>, Visibility<[ClangOption, CC1Option]>; -def fno_omit_frame_pointer : Flag<["-"], "fno-omit-frame-pointer">, Group<f_Group>; +def fno_omit_frame_pointer : Flag<["-"], "fno-omit-frame-pointer">, Group<f_Group>, + Visibility<[ClangOption, FlangOption]>; defm operator_names : BoolFOption<"operator-names", LangOpts<"CXXOperatorNames">, Default<cplusplus.KeyPath>, NegFlag<SetFalse, [], [ClangOption, CC1Option], @@ -3186,6 +3187,7 @@ BothFlags<[], [CC1Option], " to avoid heapifying local blocks">>; def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">, Group<f_Group>, + Visibility<[ClangOption, FlangOption]>, HelpText<"Omit the frame pointer from functions that don't need it. " "Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. " "On many targets, -O1 and higher omit the frame pointer by default. " @@ -6615,10 +6617,6 @@ def mdebug_pass : Separate<["-"], "mdebug-pass">, HelpText<"Enable additional debug output">, MarshallingInfoString<CodeGenOpts<"DebugPass">>; -def mframe_pointer_EQ : Joined<["-"], "mframe-pointer=">, - HelpText<"Specify which frame pointers to retain.">, Values<"all,non-leaf,none">, - NormalizedValuesScope<"CodeGenOptions::FramePointerKind">, NormalizedValues<["All", "NonLeaf", "None"]>, - MarshallingInfoEnum<CodeGenOpts<"FramePointer">, "None">; def mabi_EQ_ieeelongdouble : Flag<["-"], "mabi=ieeelongdouble">, HelpText<"Use IEEE 754 quadruple-precision for long double">, MarshallingInfoFlag<LangOpts<"PPCIEEELongDouble">>; @@ -7235,6 +7233,11 @@ HelpText<"File is for a position independent executable">, MarshallingInfoFlag<LangOpts<"PIE">>; +def mframe_pointer_EQ : Joined<["-"], "mframe-pointer=">, + HelpText<"Specify which frame pointers to retain.">, Values<"all,non-leaf,none">, + NormalizedValuesScope<"CodeGenOptions::FramePointerKind">, NormalizedValues<["All", "NonLeaf", "None"]>, + MarshallingInfoEnum<CodeGenOpts<"FramePointer">, "None">; + } // let Visibility = [CC1Option, FC1Option] let Visibility = [CC1Option] in {
Index: flang/test/Driver/fomit-frame-pointer.f90 =================================================================== --- /dev/null +++ flang/test/Driver/fomit-frame-pointer.f90 @@ -0,0 +1,12 @@ +! Test no error emitted with 'fomit-frame-pointer' flag. + +! Test opt_record flags get generated for fc1 +! RUN: %flang -fomit-frame-pointer %s + +program forttest + implicit none + integer :: n + + n = 1 + +end program forttest Index: flang/test/Driver/driver-help.f90 =================================================================== --- flang/test/Driver/driver-help.f90 +++ flang/test/Driver/driver-help.f90 @@ -57,6 +57,7 @@ ! HELP-NEXT: -fno-stack-arrays Allocate array temporaries on the heap (default) ! HELP-NEXT: -fno-version-loops-for-stride ! HELP-NEXT: Do not create unit-strided loops (default) +! HELP-NEXT: -fomit-frame-pointer Omit the frame pointer from functions that don't need it. Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. On many targets, -O1 and higher omit the frame pointer by default. -m[no-]omit-leaf-frame-pointer takes precedence for leaf functions ! HELP-NEXT: -fopenacc Enable OpenACC ! HELP-NEXT: -fopenmp-target-debug Enable debugging in the OpenMP offloading device RTL ! HELP-NEXT: -fopenmp-targets=<value> @@ -219,6 +220,7 @@ ! HELP-FC1-NEXT: -load <dsopath> Load the named plugin (dynamic shared object) ! HELP-FC1-NEXT: -menable-no-infs Allow optimization to assume there are no infinities. ! HELP-FC1-NEXT: -menable-no-nans Allow optimization to assume there are no NaNs. +! HELP-FC1-NEXT: -mframe-pointer=<value> Specify which frame pointers to retain. ! HELP-FC1-NEXT: -mllvm <value> Additional arguments to forward to LLVM's option processing ! HELP-FC1-NEXT: -mmlir <value> Additional arguments to forward to MLIR's option processing ! HELP-FC1-NEXT: -module-dir <dir> Put MODULE files in <dir> Index: flang/test/Driver/driver-help-hidden.f90 =================================================================== --- flang/test/Driver/driver-help-hidden.f90 +++ flang/test/Driver/driver-help-hidden.f90 @@ -65,6 +65,7 @@ ! CHECK-NEXT: -fno-stack-arrays Allocate array temporaries on the heap (default) ! CHECK-NEXT: -fno-version-loops-for-stride ! CHECK-NEXT: Do not create unit-strided loops (default) +! CHECK-NEXT: -fomit-frame-pointer Omit the frame pointer from functions that don't need it. Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. On many targets, -O1 and higher omit the frame pointer by default. -m[no-]omit-leaf-frame-pointer takes precedence for leaf functions ! CHECK-NEXT: -fopenacc Enable OpenACC ! CHECK-NEXT: -fopenmp-assume-no-nested-parallelism ! CHECK-NEXT: Assert no nested parallel regions in the GPU Index: clang/include/clang/Driver/Options.td =================================================================== --- clang/include/clang/Driver/Options.td +++ clang/include/clang/Driver/Options.td @@ -3061,7 +3061,8 @@ def fno_objc_legacy_dispatch : Flag<["-"], "fno-objc-legacy-dispatch">, Group<f_Group>; def fno_objc_weak : Flag<["-"], "fno-objc-weak">, Group<f_Group>, Visibility<[ClangOption, CC1Option]>; -def fno_omit_frame_pointer : Flag<["-"], "fno-omit-frame-pointer">, Group<f_Group>; +def fno_omit_frame_pointer : Flag<["-"], "fno-omit-frame-pointer">, Group<f_Group>, + Visibility<[ClangOption, FlangOption]>; defm operator_names : BoolFOption<"operator-names", LangOpts<"CXXOperatorNames">, Default<cplusplus.KeyPath>, NegFlag<SetFalse, [], [ClangOption, CC1Option], @@ -3186,6 +3187,7 @@ BothFlags<[], [CC1Option], " to avoid heapifying local blocks">>; def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">, Group<f_Group>, + Visibility<[ClangOption, FlangOption]>, HelpText<"Omit the frame pointer from functions that don't need it. " "Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. " "On many targets, -O1 and higher omit the frame pointer by default. " @@ -6615,10 +6617,6 @@ def mdebug_pass : Separate<["-"], "mdebug-pass">, HelpText<"Enable additional debug output">, MarshallingInfoString<CodeGenOpts<"DebugPass">>; -def mframe_pointer_EQ : Joined<["-"], "mframe-pointer=">, - HelpText<"Specify which frame pointers to retain.">, Values<"all,non-leaf,none">, - NormalizedValuesScope<"CodeGenOptions::FramePointerKind">, NormalizedValues<["All", "NonLeaf", "None"]>, - MarshallingInfoEnum<CodeGenOpts<"FramePointer">, "None">; def mabi_EQ_ieeelongdouble : Flag<["-"], "mabi=ieeelongdouble">, HelpText<"Use IEEE 754 quadruple-precision for long double">, MarshallingInfoFlag<LangOpts<"PPCIEEELongDouble">>; @@ -7235,6 +7233,11 @@ HelpText<"File is for a position independent executable">, MarshallingInfoFlag<LangOpts<"PIE">>; +def mframe_pointer_EQ : Joined<["-"], "mframe-pointer=">, + HelpText<"Specify which frame pointers to retain.">, Values<"all,non-leaf,none">, + NormalizedValuesScope<"CodeGenOptions::FramePointerKind">, NormalizedValues<["All", "NonLeaf", "None"]>, + MarshallingInfoEnum<CodeGenOpts<"FramePointer">, "None">; + } // let Visibility = [CC1Option, FC1Option] let Visibility = [CC1Option] in {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits