Seems like it might be problematic to have this separate implementation of checking whether frame pointers are enabled compared to the canonical one (the one actually used to enable/disable frame pointers) in the static "shouldUseFramePointer" Function?
(eg: apparently on some targets (mustUseNonLeafFramePointerForTarget) frame pointers are enabled regardless of the arguments - looks like in that case this would still produce an error if you combined -fomit-frame-pointer with -pg on such a platform, even though frame pointers would still be emitted?) On Thu, Sep 13, 2018 at 12:51 PM Stephen Hines via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: srhines > Date: Thu Sep 13 12:50:02 2018 > New Revision: 342165 > > URL: http://llvm.org/viewvc/llvm-project?rev=342165&view=rev > Log: > Support -fno-omit-frame-pointer with -pg. > > Summary: > Previously, any instance of -fomit-frame-pointer would make it such that > -pg was an invalid flag combination. If -fno-omit-frame-pointer is > passed later on the command line (such that it actually takes effect), > -pg should be allowed. > > Reviewers: nickdesaulniers > > Reviewed By: nickdesaulniers > > Subscribers: manojgupta, nickdesaulniers, cfe-commits, kongyi, chh, pirama > > Differential Revision: https://reviews.llvm.org/D51713 > > Modified: > cfe/trunk/lib/Driver/ToolChains/Clang.cpp > cfe/trunk/test/Driver/clang_f_opts.c > > Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=342165&r1=342164&r2=342165&view=diff > > ============================================================================== > --- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original) > +++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Thu Sep 13 12:50:02 2018 > @@ -4910,7 +4910,8 @@ void Clang::ConstructJob(Compilation &C, > } > > if (Arg *A = Args.getLastArg(options::OPT_pg)) > - if (Args.hasArg(options::OPT_fomit_frame_pointer)) > + if (Args.hasFlag(options::OPT_fomit_frame_pointer, > + options::OPT_fno_omit_frame_pointer, > /*default=*/false)) > D.Diag(diag::err_drv_argument_not_allowed_with) << > "-fomit-frame-pointer" > << > A->getAsString(Args); > > > Modified: cfe/trunk/test/Driver/clang_f_opts.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/clang_f_opts.c?rev=342165&r1=342164&r2=342165&view=diff > > ============================================================================== > --- cfe/trunk/test/Driver/clang_f_opts.c (original) > +++ cfe/trunk/test/Driver/clang_f_opts.c Thu Sep 13 12:50:02 2018 > @@ -531,3 +531,8 @@ > // RUN: %clang -### -S -fno-delete-null-pointer-checks > -fdelete-null-pointer-checks %s 2>&1 | FileCheck > -check-prefix=CHECK-NULL-POINTER-CHECKS %s > // CHECK-NO-NULL-POINTER-CHECKS: "-fno-delete-null-pointer-checks" > // CHECK-NULL-POINTER-CHECKS-NOT: "-fno-delete-null-pointer-checks" > + > +// RUN: %clang -### -S -fomit-frame-pointer -pg %s 2>&1 | FileCheck > -check-prefix=CHECK-NO-MIX-OMIT-FP-PG %s > +// RUN: %clang -### -S -fomit-frame-pointer -fno-omit-frame-pointer -pg > %s 2>&1 | FileCheck -check-prefix=CHECK-MIX-NO-OMIT-FP-PG %s > +// CHECK-NO-MIX-OMIT-FP-PG: '-fomit-frame-pointer' not allowed with '-pg' > +// CHECK-MIX-NO-OMIT-FP-PG-NOT: '-fomit-frame-pointer' not allowed with > '-pg' > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits