This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Understand GCC test process


On 10/07/2015 09:43 PM, Sabrina Souto wrote:
> I'm understanding that the major of code that I instrumented (in the
> first level of ..gcc-version-x.x/gcc/ and the dirs related to C/C++)
> is part of the 'gcc' driver. If so, this explains the great amount of
> common function calls across the tests.
Which binaries did you instrument? If you refer to xgcc and xg++ - they are
indeed drivers (they will be named gcc and g++ resp. when installed). But most
of code in the 'gcc' directory is related to the compiler proper (cc1 for C,
cc1plus for C++).
> 
> 
>>> Do you mean, for example, that the compiler will always build the AST,
>>> translate to intermediary code representations, etc., regardless of
>>> the compilation option... and it corresponds to a lot of common code
>>> across all tests?
>>
Yes, for the majority of tests (with some exceptions like the preprocessor tests
mentioned by Jonathan). Thus, nonuniform coverage is unsurprising. See also
https://gcc.gnu.org/ml/gcc-patches/2015-06/msg00765.html - a proposal to add
unit tests to GCC.

> I ran
> make RUNTESTFLAGS='dg.exp=c90-float-1.c -v -v' check-gcc
> And I saw in the log:
> ...
> doing compile
> Invoking the compiler as
> ../gcc-r227092/objdir/gcc/testsuite/g++/../../xg++ -B/...
> ...
> 
> The test ../testsuite/gcc.dg/c90-float-1.c contains the action: /* {
> dg-do preprocess } */
> So, why "doing compile" was in the execution log? I thought that the
> compiler would not be called in this case.
> Am I running the test in a wrong way?
Probably the message is wrong. Nevertheless, IIRC, the preprocessor is also run
as xg++. xg++ will invoke the compiler proper (cc1plus), which will perform
preprocessing.

> Where can I find all the code that implements the compiler and
> preprocessor? In libcpp, libcc1, boehm-gc ?
Mostly in gcc and libcpp directories. Code from include and libiberty is also used.

> Please, help me.
Consider looking at https://gcc.gnu.org/onlinedocs/gccint/Source-Tree.html and
gcc/Makefile.in in more detail.

Finally, note that GCC has some means of test coverage analysis: you can
configure/build it with "--disable-bootstrap --enable-coverage", run the tests
and then use gcov.

-- 
Regards,
    Mikhail Maltsev


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]