mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 1/2] tools: Bump minimum LLVM C++ std to GNU++14
@ 2021-10-11 23:24 Ian Rogers
  2021-10-11 23:24 ` [PATCH 2/2] perf clang: Fixes for more recent LLVM/clang Ian Rogers
  0 siblings, 1 reply; 5+ messages in thread
From: Ian Rogers @ 2021-10-11 23:24 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Nathan Chancellor, Nick Desaulniers, Daniel Borkmann, Leo Yan,
	Michael Petlan, Sedat Dilek, linux-kernel, linux-perf-users,
	llvm
  Cc: Ian Rogers

LLVM 9 (current release is LLVM 13) moved the minimum C++ version to
GNU++14. Bump the version numbers in the feature test and perf build.

Signed-off-by: Ian Rogers <irogers@google.com>
---
 tools/build/feature/Makefile | 6 +++---
 tools/perf/Makefile.config   | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index d024b5204ba0..19f145a35a43 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -300,7 +300,7 @@ $(OUTPUT)test-jvmti-cmlr.bin:
 	$(BUILD)
 
 $(OUTPUT)test-llvm.bin:
-	$(BUILDXX) -std=gnu++11 				\
+	$(BUILDXX) -std=gnu++14 				\
 		-I$(shell $(LLVM_CONFIG) --includedir) 		\
 		-L$(shell $(LLVM_CONFIG) --libdir)		\
 		$(shell $(LLVM_CONFIG) --libs Core BPF)		\
@@ -308,12 +308,12 @@ $(OUTPUT)test-llvm.bin:
 		> $(@:.bin=.make.output) 2>&1
 
 $(OUTPUT)test-llvm-version.bin:
-	$(BUILDXX) -std=gnu++11 				\
+	$(BUILDXX) -std=gnu++14					\
 		-I$(shell $(LLVM_CONFIG) --includedir)		\
 		> $(@:.bin=.make.output) 2>&1
 
 $(OUTPUT)test-clang.bin:
-	$(BUILDXX) -std=gnu++11 				\
+	$(BUILDXX) -std=gnu++14					\
 		-I$(shell $(LLVM_CONFIG) --includedir) 		\
 		-L$(shell $(LLVM_CONFIG) --libdir)		\
 		-Wl,--start-group -lclangBasic -lclangDriver	\
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 0ae2e3d8b832..86be3f6ec018 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -285,7 +285,7 @@ CORE_CFLAGS += -Wall
 CORE_CFLAGS += -Wextra
 CORE_CFLAGS += -std=gnu99
 
-CXXFLAGS += -std=gnu++11 -fno-exceptions -fno-rtti
+CXXFLAGS += -std=gnu++14 -fno-exceptions -fno-rtti
 CXXFLAGS += -Wall
 CXXFLAGS += -fno-omit-frame-pointer
 CXXFLAGS += -ggdb3
-- 
2.33.0.882.g93a45727a2-goog


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/2] perf clang: Fixes for more recent LLVM/clang
  2021-10-11 23:24 [PATCH 1/2] tools: Bump minimum LLVM C++ std to GNU++14 Ian Rogers
@ 2021-10-11 23:24 ` Ian Rogers
  2021-10-11 23:35   ` Ian Rogers
  0 siblings, 1 reply; 5+ messages in thread
From: Ian Rogers @ 2021-10-11 23:24 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Nathan Chancellor, Nick Desaulniers, Daniel Borkmann, Leo Yan,
	Michael Petlan, Sedat Dilek, linux-kernel, linux-perf-users,
	llvm
  Cc: Ian Rogers

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",
 		"-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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] perf clang: Fixes for more recent LLVM/clang
  2021-10-11 23:24 ` [PATCH 2/2] perf clang: Fixes for more recent LLVM/clang Ian Rogers
@ 2021-10-11 23:35   ` Ian Rogers
  2021-10-11 23:49     ` Fāng-ruì Sòng
  0 siblings, 1 reply; 5+ messages in thread
From: Ian Rogers @ 2021-10-11 23:35 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Nathan Chancellor, Nick Desaulniers, Daniel Borkmann, Leo Yan,
	Michael Petlan, Sedat Dilek, linux-kernel, linux-perf-users,
	llvm

On Mon, Oct 11, 2021 at 4:24 PM Ian Rogers <irogers@google.com> wrote:
>
> 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.

Thanks,
Ian

>                 "-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
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] perf clang: Fixes for more recent LLVM/clang
  2021-10-11 23:35   ` Ian Rogers
@ 2021-10-11 23:49     ` Fāng-ruì Sòng
  2021-10-12  2:17       ` Ian Rogers
  0 siblings, 1 reply; 5+ messages in thread
From: Fāng-ruì Sòng @ 2021-10-11 23:49 UTC (permalink / raw)
  To: Ian Rogers
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Nathan Chancellor, Nick Desaulniers, Daniel Borkmann, Leo Yan,
	Michael Petlan, Sedat Dilek, linux-kernel, linux-perf-users,
	llvm

On Mon, Oct 11, 2021 at 4:35 PM Ian Rogers <irogers@google.com> wrote:
>
> On Mon, Oct 11, 2021 at 4:24 PM Ian Rogers <irogers@google.com> wrote:
> >
> > 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
>
> >                 "-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?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] perf clang: Fixes for more recent LLVM/clang
  2021-10-11 23:49     ` Fāng-ruì Sòng
@ 2021-10-12  2:17       ` Ian Rogers
  0 siblings, 0 replies; 5+ messages in thread
From: Ian Rogers @ 2021-10-12  2:17 UTC (permalink / raw)
  To: Fāng-ruì Sòng
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Nathan Chancellor, Nick Desaulniers, Daniel Borkmann, Leo Yan,
	Michael Petlan, Sedat Dilek, linux-kernel, linux-perf-users,
	llvm

On Mon, Oct 11, 2021 at 4:49 PM Fāng-ruì Sòng <maskray@google.com> wrote:
>
> On Mon, Oct 11, 2021 at 4:35 PM Ian Rogers <irogers@google.com> wrote:
> >
> > On Mon, Oct 11, 2021 at 4:24 PM Ian Rogers <irogers@google.com> wrote:
> > >
> > > 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.

Done in v2 (please consider adding Acked-by, Reviewed-by, etc).

> > Thanks,
> > Ian
> >
> > >                 "-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?

Arnaldo can likely best comment. Clang 6.0.1 was released on July 5th
2018 so it may still be in his build tests.

Thanks!
Ian

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-10-12  2:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-11 23:24 [PATCH 1/2] tools: Bump minimum LLVM C++ std to GNU++14 Ian Rogers
2021-10-11 23:24 ` [PATCH 2/2] perf clang: Fixes for more recent LLVM/clang Ian Rogers
2021-10-11 23:35   ` Ian Rogers
2021-10-11 23:49     ` Fāng-ruì Sòng
2021-10-12  2:17       ` Ian Rogers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®