Thread (5 messages) 5 messages, 2 authors, 2021-10-12

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,
Ian
quoted
                "-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?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help