[cfe-dev] question regarding the C++ test case under LLVM test
Lin, Jin via cfe-dev
cfe-dev at lists.llvm.org
Tue Sep 20 14:57:07 PDT 2016
Hi Jon,
Many thanks for your suggestions.
Jin
-----Original Message-----
From: Jonathan Roelofs [mailto:jonathan at codesourcery.com]
Sent: Tuesday, September 20, 2016 2:51 PM
To: Lin, Jin <jin.lin at intel.com>; cfe-dev at lists.llvm.org
Subject: Re: [cfe-dev] question regarding the C++ test case under LLVM test
On 9/20/16 3:43 PM, Lin, Jin wrote:
>
>
> -----Original Message----- From: Jonathan Roelofs
> [mailto:jonathan at codesourcery.com] Sent: Tuesday, September 20, 2016
> 1:18 PM To: Lin, Jin <jin.lin at intel.com>; cfe-dev at lists.llvm.org
> Subject: Re: [cfe-dev] question regarding the C++ test case under LLVM
> test
>
>
>
> On 9/20/16 12:22 PM, Lin, Jin via cfe-dev wrote:
>> Hi,
>>
>>
>>
>> I would like to have the following test case only running under Linux
>> instead of Windows. Can someone shed me the light on how to make it
>> work?
>>
>>
>> The second question is on how to modify the RUN command to run it
>> under windows. If clangxx is used, the dirver-mode is set to g++.
>> I have to specify the driver mode to be msvc. Please note that the
>> test caseI has header file so that I cannot simply use clang_cc1.
>
> The RUN command doesn't do what you think it does. The RUN line you've
> got just runs the compiler, and checks the IR that comes out of it for
> particular patterns (using FileCheck). However, it seems like you're
> asking about how to *execute* a testcase... In general, clang tests
> should not be execution tests. Rather, they should only test codegen,
> and codegen should be the same no matter what the host is. There are a
> few exceptions here and there where host-specific functionality needs
> to be tested, but codegen is not one of them.
>
>
> ************** I used "llvm-lit -v" to test my test case. So I know
> exactly what the script is. I am not asking to execute the test case.
> In fact, what I ask for is to compile the test case and emit the LLVM
> IR under Linux and Windows.
Sorry for the misunderstanding.
> The difference of this test file from
> other files in the directory clang/test is that the test file
> includes the header file. My point is, with different OS, the header
> file might be different.
Even with the same OS, the header might be different (see my "p.s." from below).
Your best bet is to write the minimal version of std::vector that you need to test the functionality you're trying to test, and have it inline in your testcase.... depending on the host environment via #include's is an anti-pattern in clang's testsuite.
Jon
>
> Script: -- clang --driver-mode=g++ -target
> x86_64-unknown-linux-gnu -O3
> ./llvm/tools/clang/test/CodeGen/std-container-ptr.cpp -Xclang
> -disable-llvm-optzns -emit-llvm -S -o - | FileCheck
> ./llvm/tools/clang/test/CodeGen/intel/std-container-ptr.cpp
>
>
> Jon
>
>>
>>
>>
>> Thanks,
>>
>>
>>
>> Jin
>>
>>
>>
>> FILE
>>
>> // RUN: %clangxx -target x86_64-unknown-linux-gnu -Xclang
>> -fintel-compatibility -O3 %s -Xclang -disable-llvm-optzns -emit-llvm
>> -S -o - | FileCheck %s
>>
>>
>>
>> // Check that llvm.intel.std.container.ptr intrinsic is generated.
>>
>> //
>>
>> #include <vector>
>
> p.s. you probably want to expand this ^ out so that your testcase
> doesn't depend on the host environment. Rhetorical question: what
> happens to your testcase if the host's <vector> comes from libstdc++
> vs if it comes from libc++?
>
>>
>> #define CONST_VECSIZE 2050
>>
>>
>>
>> float TIME,RESULT;
>>
>> std::vector< std::vector<float> > a(CONST_VECSIZE);
>>
>> std::vector< std::vector<float> >
>> b(CONST_VECSIZE),c(CONST_VECSIZE);
>>
>> extern void foo(std::vector< std::vector<float> > *);
>>
>> void test_vector()
>>
>> {
>>
>> int i, j, k;
>>
>>
>>
>>
>>
>> for(i=0;i<CONST_VECSIZE;i++)
>>
>> for(k=0;k<CONST_VECSIZE;k++)
>>
>> for(j=0;j<CONST_VECSIZE;j++)
>>
>> c[i][j] = c[i][j] + a[i][k]* b[k][j];
>>
>>
>>
>> }
>>
>> // CHECK: %{{.*}} = call %"class.std::vector.0"**
>> @"llvm.std.container.ptr.p0p0class.std::vector.0"(%"class.std::vector.
>>
>>
0"**
>> %{{.*}})
>>
>>
>>
>> _______________________________________________ cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>
> -- Jon Roelofs jonathan at codesourcery.com CodeSourcery / Mentor
> Embedded
>
--
Jon Roelofs
jonathan at codesourcery.com
CodeSourcery / Mentor Embedded
More information about the cfe-dev
mailing list