This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG5ea2d4fa4811: Avoid conflicts between debug-info and pseudo-probe profiling (authored by probinson).
Changed prior to commit: https://reviews.llvm.org/D96354?vs=322428&id=322684#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96354/new/ https://reviews.llvm.org/D96354 Files: clang/lib/Driver/ToolChains/Clang.cpp clang/test/CodeGen/pseudo-probe-emit.c clang/test/Driver/pseudo-probe.c Index: clang/test/Driver/pseudo-probe.c =================================================================== --- /dev/null +++ clang/test/Driver/pseudo-probe.c @@ -0,0 +1,7 @@ +// RUN: %clang -### -fpseudo-probe-for-profiling %s 2>&1 | FileCheck %s --check-prefix=YESPROBE +// RUN: %clang -### -fno-pseudo-probe-for-profiling %s 2>&1 | FileCheck %s --check-prefix=NOPROBE +// RUN: %clang -### -fpseudo-probe-for-profiling -fdebug-info-for-profiling %s 2>&1 | FileCheck %s --check-prefix=CONFLICT + +// YESPROBE: -fpseudo-probe-for-profiling +// NOPROBE-NOT: -fpseudo-probe-for-profiling +// CONFLICT: invalid argument Index: clang/test/CodeGen/pseudo-probe-emit.c =================================================================== --- clang/test/CodeGen/pseudo-probe-emit.c +++ clang/test/CodeGen/pseudo-probe-emit.c @@ -1,4 +1,4 @@ -// RUN: %clang -O2 -fexperimental-new-pass-manager -fpseudo-probe-for-profiling -g -emit-llvm -S -o - %s | FileCheck %s +// RUN: %clang_cc1 -O2 -fno-legacy-pass-manager -fpseudo-probe-for-profiling -debug-info-kind=limited -emit-llvm -o - %s | FileCheck %s // Check the generation of pseudoprobe intrinsic call Index: clang/lib/Driver/ToolChains/Clang.cpp =================================================================== --- clang/lib/Driver/ToolChains/Clang.cpp +++ clang/lib/Driver/ToolChains/Clang.cpp @@ -3746,6 +3746,12 @@ ArgStringList &CmdArgs, codegenoptions::DebugInfoKind &DebugInfoKind, DwarfFissionKind &DwarfFission) { + // These two forms of profiling info can't be used together. + if (const Arg *A1 = Args.getLastArg(options::OPT_fpseudo_probe_for_profiling)) + if (const Arg *A2 = Args.getLastArg(options::OPT_fdebug_info_for_profiling)) + D.Diag(diag::err_drv_argument_not_allowed_with) + << A1->getAsString(Args) << A2->getAsString(Args); + if (Args.hasFlag(options::OPT_fdebug_info_for_profiling, options::OPT_fno_debug_info_for_profiling, false) && checkDebugInfoOption(
Index: clang/test/Driver/pseudo-probe.c =================================================================== --- /dev/null +++ clang/test/Driver/pseudo-probe.c @@ -0,0 +1,7 @@ +// RUN: %clang -### -fpseudo-probe-for-profiling %s 2>&1 | FileCheck %s --check-prefix=YESPROBE +// RUN: %clang -### -fno-pseudo-probe-for-profiling %s 2>&1 | FileCheck %s --check-prefix=NOPROBE +// RUN: %clang -### -fpseudo-probe-for-profiling -fdebug-info-for-profiling %s 2>&1 | FileCheck %s --check-prefix=CONFLICT + +// YESPROBE: -fpseudo-probe-for-profiling +// NOPROBE-NOT: -fpseudo-probe-for-profiling +// CONFLICT: invalid argument Index: clang/test/CodeGen/pseudo-probe-emit.c =================================================================== --- clang/test/CodeGen/pseudo-probe-emit.c +++ clang/test/CodeGen/pseudo-probe-emit.c @@ -1,4 +1,4 @@ -// RUN: %clang -O2 -fexperimental-new-pass-manager -fpseudo-probe-for-profiling -g -emit-llvm -S -o - %s | FileCheck %s +// RUN: %clang_cc1 -O2 -fno-legacy-pass-manager -fpseudo-probe-for-profiling -debug-info-kind=limited -emit-llvm -o - %s | FileCheck %s // Check the generation of pseudoprobe intrinsic call Index: clang/lib/Driver/ToolChains/Clang.cpp =================================================================== --- clang/lib/Driver/ToolChains/Clang.cpp +++ clang/lib/Driver/ToolChains/Clang.cpp @@ -3746,6 +3746,12 @@ ArgStringList &CmdArgs, codegenoptions::DebugInfoKind &DebugInfoKind, DwarfFissionKind &DwarfFission) { + // These two forms of profiling info can't be used together. + if (const Arg *A1 = Args.getLastArg(options::OPT_fpseudo_probe_for_profiling)) + if (const Arg *A2 = Args.getLastArg(options::OPT_fdebug_info_for_profiling)) + D.Diag(diag::err_drv_argument_not_allowed_with) + << A1->getAsString(Args) << A2->getAsString(Args); + if (Args.hasFlag(options::OPT_fdebug_info_for_profiling, options::OPT_fno_debug_info_for_profiling, false) && checkDebugInfoOption(
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits