* [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®