Re: [PATCH v3 10/30] perf clang: Add builtin clang support ant test case

From: Wangnan (F)
Date: Mon Nov 28 2016 - 02:43:16 EST




On 2016/11/27 1:17, Alexei Starovoitov wrote:
On Sat, Nov 26, 2016 at 07:03:34AM +0000, Wang Nan wrote:
Add basic clang support in clang.cpp and test__clang() testcase. The
first testcase checks if builtin clang is able to generate LLVM IR.

tests/clang.c is a proxy. Real testcase resides in
utils/c++/clang-test.cpp in c++ and exports C interface to perf test
subsystem.

Test result:

$ perf test -v clang
51: Test builtin clang support :
51.1: Test builtin clang compile C source to IR :
--- start ---
test child forked, pid 13215
test child finished with 0
---- end ----
Test builtin clang support subtest 0: Ok

Signed-off-by: Wang Nan <wangnan0@xxxxxxxxxx>
...
+static CompilerInvocation *
+createCompilerInvocation(StringRef& Path, DiagnosticsEngine& Diags)
+{
+ llvm::opt::ArgStringList CCArgs {
+ "-cc1",
+ "-triple", "bpf-pc-linux",
+ "-fsyntax-only",
+ "-ferror-limit", "19",
+ "-fmessage-length", "127",
why such limits?

+ "-O2",
+ "-nostdsysteminc",
+ "-nobuiltininc",
+ "-vectorize-loops",
+ "-vectorize-slp",

Thank you for pointing these out. These arguments are get by analysising
the clang example:

https://llvm.org/svn/llvm-project/cfe/branches/ggreif/CallInst-operands/examples/clang-interpreter/main.cpp

The above example create a C compiler using clang::driver::Driver (bcc also uses driver).
I form the argument list according to arglist the driver created for its CI,
and leaves arguments I'm not quite sure unchanged.

why above two flags are needed?

+ "-Wno-unused-value",
+ "-Wno-pointer-sign",
these two -Wno makes sense. please add the comment to explain the reasons.

They are inherited from samples/bpf/Makefile to suppress some warning
when include kernel headers.

Thank you.