Re: [PATCH 2/2] perf clang: Fixes for more recent LLVM/clang
From: Fāng-ruì Sòng <hidden>
Date: 2021-10-11 23:49:28
Also in:
lkml, llvm
On Mon, Oct 11, 2021 at 4:35 PM Ian Rogers [off-list ref] wrote:
quoted hunk ↗ jump to hunk
On Mon, Oct 11, 2021 at 4:24 PM Ian Rogers [off-list ref] wrote:quoted
The parameters to two functions and the location of a variable have changed in more recent LLVM/clang releases. Tested with LLVM 6, 8, 9, 10 and 11. Signed-off-by: Ian Rogers <irogers@google.com> --- tools/perf/util/c++/clang.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-)diff --git a/tools/perf/util/c++/clang.cpp b/tools/perf/util/c++/clang.cpp index c8885dfa3667..756200cb80b1 100644 --- a/tools/perf/util/c++/clang.cpp +++ b/tools/perf/util/c++/clang.cpp@@ -44,7 +44,6 @@ createCompilerInvocation(llvm::opt::ArgStringList CFlags, StringRef& Path, "-triple", "bpf-pc-linux", "-fsyntax-only", "-ferror-limit", "19", - "-fmessage-length", "127",Sorry, missed from the commit message. I removed this flag to format output down to 127 columns as with clang 11 I see in perf test: 58: builtin clang support : 58.1: builtin clang compile C source to IR :--- start ---test child forked, pid 279307 error: unknown argument: '-fmessage-length' 1 error generated. test child finished with -1 The flag isn't necessary for correct operation.
Right, I changed the -cc1 option from Separate-form -fmessage-length to -fmessage-length= in 2020-03. -ferror-limit can be deleted as well.
Thanks, Ianquoted
"-O2", "-nostdsysteminc", "-nobuiltininc",@@ -55,7 +54,11 @@ createCompilerInvocation(llvm::opt::ArgStringList CFlags, StringRef& Path, "-x", "c"}; CCArgs.append(CFlags.begin(), CFlags.end()); - CompilerInvocation *CI = tooling::newInvocation(&Diags, CCArgs); + CompilerInvocation *CI = tooling::newInvocation(&Diags, CCArgs +#if CLANG_VERSION_MAJOR >= 11 + ,/*BinaryName=*/nullptr +#endif + ); FrontendOptions& Opts = CI->getFrontendOpts(); Opts.Inputs.clear();@@ -151,13 +154,16 @@ getBPFObjectFromModule(llvm::Module *Module) legacy::PassManager PM; bool NotAdded; -#if CLANG_VERSION_MAJOR < 7 - NotAdded = TargetMachine->addPassesToEmitFile(PM, ostream, - TargetMachine::CGFT_ObjectFile); + NotAdded = TargetMachine->addPassesToEmitFile(PM, ostream +#if CLANG_VERSION_MAJOR >= 7 + , /*DwoOut=*/nullptr +#endif +#if CLANG_VERSION_MAJOR < 10 + , TargetMachine::CGFT_ObjectFile #else - NotAdded = TargetMachine->addPassesToEmitFile(PM, ostream, nullptr, - TargetMachine::CGFT_ObjectFile); + , llvm::CGFT_ObjectFile #endif + ); if (NotAdded) { llvm::errs() << "TargetMachine can't emit a file of this type\n"; return std::unique_ptr<llvm::SmallVectorImpl<char>>(nullptr); --2.33.0.882.g93a45727a2-goog
Related, does it make sense to drop CLANG_VERSION_MAJOR<7 support?