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 <wangn...@huawei.com>
...
+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.


Reply via email to