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

Reply via email to