2021-10-12 02:17:32

by Ian Rogers

[permalink] [raw]
Subject: [PATCH v2 1/2] tools: Bump minimum LLVM C++ std to GNU++14

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 <[email protected]>
---
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


2021-10-12 02:22:09

by Ian Rogers

[permalink] [raw]
Subject: [PATCH v2 2/2] perf clang: Fixes for more recent LLVM/clang

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.

Signed-off-by: Ian Rogers <[email protected]>
---
tools/perf/util/c++/clang.cpp | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/tools/perf/util/c++/clang.cpp b/tools/perf/util/c++/clang.cpp
index c8885dfa3667..df7b18fb6b6e 100644
--- a/tools/perf/util/c++/clang.cpp
+++ b/tools/perf/util/c++/clang.cpp
@@ -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);
--
2.33.0.882.g93a45727a2-goog

2021-10-12 03:09:09

by Fangrui Song

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] perf clang: Fixes for more recent LLVM/clang

On Mon, Oct 11, 2021 at 7:13 PM Ian Rogers <[email protected]> wrote:
>
> 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.
>
> Signed-off-by: Ian Rogers <[email protected]>
> ---
> tools/perf/util/c++/clang.cpp | 21 +++++++++++++--------
> 1 file changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/tools/perf/util/c++/clang.cpp b/tools/perf/util/c++/clang.cpp
> index c8885dfa3667..df7b18fb6b6e 100644
> --- a/tools/perf/util/c++/clang.cpp
> +++ b/tools/perf/util/c++/clang.cpp
> @@ -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);
> --
> 2.33.0.882.g93a45727a2-goog
>

Thanks for the change:)

Reviewed-by: Fangrui Song <[email protected]>

2021-10-12 03:10:41

by Fangrui Song

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] tools: Bump minimum LLVM C++ std to GNU++14

On Mon, Oct 11, 2021 at 7:13 PM Ian Rogers <[email protected]> wrote:
>
> 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 <[email protected]>


Reviewed-by: Fangrui Song <[email protected]>

2021-10-28 22:27:41

by Ian Rogers

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] tools: Bump minimum LLVM C++ std to GNU++14

Hi Arnaldo,

Is there anything you'd like me to do extra for these two patches?

Thanks,
Ian

On Mon, Oct 11, 2021 at 8:09 PM Fāng-ruì Sòng <[email protected]> wrote:
>
> On Mon, Oct 11, 2021 at 7:13 PM Ian Rogers <[email protected]> wrote:
> >
> > 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 <[email protected]>
>
>
> Reviewed-by: Fangrui Song <[email protected]>

2021-11-04 12:44:24

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] tools: Bump minimum LLVM C++ std to GNU++14

Em Mon, Oct 11, 2021 at 08:09:01PM -0700, Fāng-ruì Sòng escreveu:
> On Mon, Oct 11, 2021 at 7:13 PM Ian Rogers <[email protected]> wrote:
> >
> > 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 <[email protected]>
>
>
> Reviewed-by: Fangrui Song <[email protected]>

Thanks, applied both patches.

- Arnaldo