perf clang: Fixes for more recent LLVM/clang
authorIan Rogers <irogers@google.com>
Tue, 12 Oct 2021 02:13:21 +0000 (19:13 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 4 Nov 2021 12:32:00 +0000 (09:32 -0300)
The parameters to two functions and the location of a variable have
changed in more recent LLVM/clang releases.

Remove the unneecessary -fmessage-length and -ferror-limit flags, the
former causes failures like:

  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

Tested with LLVM 6, 8, 9, 10 and 11.

Reviewed-by: Fangrui Song <maskray@google.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Michael Petlan <mpetlan@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sedat Dilek <sedat.dilek@gmail.com>,
Cc: llvm@lists.linux.dev
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/c++/clang.cpp

index c8885df..df7b18f 100644 (file)
@@ -43,8 +43,6 @@ createCompilerInvocation(llvm::opt::ArgStringList CFlags, StringRef& Path,
                "-cc1",
                "-triple", "bpf-pc-linux",
                "-fsyntax-only",
-               "-ferror-limit", "19",
-               "-fmessage-length", "127",
                "-O2",
                "-nostdsysteminc",
                "-nobuiltininc",
@@ -55,7 +53,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 +153,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);