public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jeff Law <law@redhat.com>
To: David Malcolm <dmalcolm@redhat.com>, Bernd Schmidt <bschmidt@redhat.com>
Cc: gcc-patches@gcc.gnu.org
Subject: Re: [PATCH 00/16] Unit tests framework (v3)
Date: Thu, 29 Oct 2015 19:38:00 -0000	[thread overview]
Message-ID: <5632745A.6040004@redhat.com> (raw)
In-Reply-To: <1446135023.26362.47.camel@surprise>

On 10/29/2015 10:10 AM, David Malcolm wrote:
>
> There may be useful things in gtest for us that I'm not using yet.  For
> example, the support for death tests may be useful for testing that e.g.
> our checking macros kill the program sanely in the presence of malformed
> internal data.
Please check on this.  I want to build a set of tests around the 
SSA_NAME manager, and that would include setting up can't happen 
situations and seeing if they're properly diagnosed by the checking 
code.  So obviously I have an interest in how the framework handles this 
kind of scenario.


>
> I wanted to reuse the gtest code on the grounds that:
>
>    * the code exists
>
>    * it's maintained (https://github.com/google/googletest
>      shows the last commit was 10 days ago)
>
>    * it has documentation:
> https://github.com/google/googletest/blob/master/googletest/docs/Primer.md
> (there's much more that just that)
>
>    * it will be familiar to some people from other projects
>
>
> That said, if it's a blocker, I can attempt a minimal reimplementation
> of the subset of the API that I'm using.
I'd probably lean towards continuing to use gtest.  I don't currently 
see a compelling reason to build another framework.

>
>>> v1 of the kit was structured as a frontend, v2 of the kit as
>>> a plugin that was built as if it were a frontend.  Both of
>>> these approaches were problematic, so this version
>>> of the patch kit simply builds as a test case within the
>>> plugin.exp suites.
>>
>> This is the part I'm least certain about, for two reasons:
>>    * They are more like source files than tests, and I think I'd prefer
>>      to have them alongside the source, in gcc/ rather than in the
>>      testsuite. This way people are invariable going to fail to notice
>>      them when they grep for something.
>
> So something like:
>
>    gcc/test-vec.c
>
> or even:
>
>    gcc/vec-tests.c
>
> so that it sorts next to gcc/vec.h in a listing?
>
> i.e.   gcc/FOO-tests.c  for gcc/FOO.c
>
> Maybe the unittests-plugin.c should live within the "gcc" directory?
It's a bit of bike-shedding :-)  I'd be happy with gcc/test-whatever or 
gcc/whatever-test.  Both have pluses/minuses and in the end I doubt it'd 
matter much.

My only worry here is doubling the number of files in gcc/.  But I'd 
claim that we want to have more subdirectories for major logical areas. 
  gimple/ rtl/ whatever, which would significantly mitigate the problem 
of too many files in gcc/


>
>>    * This uses a plugin into whatever compiler was built, but sometimes
>>      you can't really set up unit tests that way because what you want
>>      to test depends on target specifics. What I've often wanted is a
>>      special test target that gets built with a special machine
>>      description that has whatever patterns are needed to replicate
>>      tricky situations in reload or other optimization passes.
>>
>> The tests you have so far are focused mostly on high-level gimple/tree
>> tests where this limitation is probably not showing up very much, but I
>> think it would be better to have something that allows us to have more
>> in-depth tests.
>
> I think our long-term goal should be at least 5 styles of test:
>
> (A) end-to-end tests of the compiler: running it on some source and
> verifying properties of the diagnostics and/or generated code
> (potentially running it).  This is what we have today.
>
> (B) unit tests of individual subsystems: tests that exercise specific
> internal APIs e.g. containers like vec<>, hash_map<> etc, also things
> like gengtype.  This is a gap in our current test coverage, and what
> this patch kit aims to start filling.
Right.  It's essentially data structure and other very low level testing 
(gengtype).

That's even true if I think about the SSA_NAME manager -- in an ideal 
world, it'd just be a container for objects that we want to release & 
recycle, whether they're SSA_NAMEs, pseudos, whatever we decide has the 
right properties to benefit from recycling.  The fact that it's 
recycling SSA_NAMEs isn't for the most part all that important.



>
> (C) and (D): tests of specific passes: tests that accept IR (either
> gimple or RTL), and run just one pass, and verify properties of the IR
> emitted by the pass, or messages emitted by the pass.  LLVM has a "-R"
> remark option, so that a pass can issue remarks about what it's doing (a
> new kind of diagnostic):
>
> http://llvm.org/releases/3.5.0/tools/clang/docs/UsersManual.html#opt-rpass
>
> We could implement this kind of testing by implementing gimple and RTL
> frontends, and a -R option, which could integrate nicely with DejaGnu,
> with
>    /* { dg-remark "inlined here" } */
> and the like.
>
> This would require finishing the gimple FE, and writing an RTL FE
> (independent goals).  Hopefully that would give us test coverage for
> dealing with e.g. tricky reload situations.
Insert note from Richi (was it?) where he wants the gimple FE made real 
and integrated.  I think you'll have technical support if you want to 
tackle that next year.

Something similar for RTL would be cool, but probably even harder given 
the amount of state that's traditionally been kept out of the IL stream. 
  I'm sure some things are better today than in the past, but it's 
probably a very tanged mess to get to where we want to go with RTL.

jeff

  reply	other threads:[~2015-10-29 19:32 UTC|newest]

Thread overview: 176+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-10 15:10 [PATCH 00/17] RFC: Addding a unit testing framework to gcc David Malcolm
2015-06-10 15:10 ` [PATCH 12/17] Add test-tree.c to gcc/unittests David Malcolm
2015-06-10 15:10 ` [PATCH 07/17] Add test-gimple.c " David Malcolm
2015-06-10 15:10 ` [PATCH 05/17] Add test-functions.c " David Malcolm
2015-06-10 15:10 ` [PATCH 10/17] Add test-locations.c " David Malcolm
2015-06-10 15:10 ` [PATCH 08/17] Add test-hash-map.c " David Malcolm
2015-06-10 15:10 ` [PATCH 11/17] Add test-rtl.c " David Malcolm
2015-06-10 15:10 ` [PATCH 04/17] Add test-folding.c " David Malcolm
2015-06-10 15:10 ` [PATCH 09/17] Add test-hash-set.c " David Malcolm
2015-06-10 15:10 ` [PATCH 01/17] Add Make-lang.in and config-lang.in " David Malcolm
2015-06-10 15:10 ` [PATCH 02/17] Add test-bitmap.c " David Malcolm
2015-06-23 19:17   ` Jeff Law
2015-06-10 15:17 ` [PATCH 03/17] Add test-cfg.c " David Malcolm
2015-06-23 19:26   ` Jeff Law
2015-06-25 18:13     ` David Malcolm
2015-06-10 15:25 ` [PATCH 17/17] toplev.c: move location_adhoc_data_fini call David Malcolm
2015-06-10 15:26 ` [PATCH 16/17] Add unittests-main.c to gcc/unittests David Malcolm
2015-06-10 15:26 ` [PATCH 13/17] Add test-vec.c " David Malcolm
2015-06-10 15:28 ` [PATCH 06/17] Add test-ggc.c " David Malcolm
2015-06-10 15:28 ` [PATCH 15/17] Add unittests-frontend.c " David Malcolm
2015-06-10 15:34 ` [PATCH 14/17] Add test-wide-int.c " David Malcolm
2015-06-10 16:19 ` [PATCH 00/17] RFC: Addding a unit testing framework to gcc Jakub Jelinek
2015-06-10 16:25   ` Richard Biener
2015-06-10 17:56   ` David Malcolm
2015-06-10 23:42     ` Jakub Jelinek
2015-06-17 20:36       ` [PATCH/RFC]: unittesting v2: as a plugin (was Re: [PATCH 00/17] RFC: Addding a unit testing framework to gcc) David Malcolm
2015-06-23 19:29         ` Jeff Law
2015-10-27 19:31           ` [PATCH 00/16] Unit tests framework (v3) David Malcolm
2015-10-27 19:31             ` [PATCH 11/16] Add test-hash-set.c to unittests David Malcolm
2015-10-30  4:54               ` Jeff Law
2015-10-27 19:31             ` [PATCH 05/16] Add test-et-forest.c " David Malcolm
2015-10-30  4:11               ` Jeff Law
2015-10-27 19:31             ` [PATCH 15/16] Add test-vec.c " David Malcolm
2015-10-30  5:10               ` Jeff Law
2015-10-27 19:31             ` [PATCH 01/16] Add unittest infrastructure David Malcolm
2015-10-30  5:20               ` Jeff Law
2015-10-27 19:31             ` [PATCH 03/16] Add test-bitmap.c to unittests David Malcolm
2015-10-29 21:36               ` Jeff Law
2015-10-27 19:32             ` [PATCH 04/16] Add test-cfg.c " David Malcolm
2015-10-29 22:23               ` Jeff Law
2015-10-27 19:32             ` [PATCH 10/16] Add test-hash-map.c " David Malcolm
2015-10-30  4:57               ` Jeff Law
2015-10-27 19:32             ` [PATCH 07/16] Add test-functions.c " David Malcolm
2015-10-30  5:19               ` Jeff Law
2015-10-27 19:35             ` [PATCH 06/16] Add test-folding.c " David Malcolm
2015-10-30  5:06               ` Jeff Law
2015-10-27 19:48             ` [PATCH 14/16] Add test-tree.c " David Malcolm
2015-10-30  5:00               ` Jeff Law
2015-10-27 19:49             ` [PATCH 08/16] Add test-ggc.c " David Malcolm
2015-10-30  5:08               ` Jeff Law
2015-10-27 19:49             ` [PATCH 12/16] Add test-locations.c " David Malcolm
2015-10-30  5:09               ` Jeff Law
2015-10-27 19:50             ` [PATCH 13/16] Add test-rtl.c " David Malcolm
2015-10-30  4:58               ` Jeff Law
2015-10-31 20:36                 ` Segher Boessenkool
2015-10-27 19:51             ` [PATCH 16/16] Add test-wide-int.c " David Malcolm
2015-10-30  5:15               ` Jeff Law
2015-10-27 19:58             ` [PATCH 09/16] Add test-gimple.c " David Malcolm
2015-10-28 12:39               ` Richard Biener
2015-10-28 12:44                 ` Richard Biener
2015-10-28 16:22                   ` Jeff Law
2015-10-30  5:02               ` Jeff Law
2015-10-27 20:16             ` [PATCH 00/16] Unit tests framework (v3) David Malcolm
2015-10-30  5:28               ` Jeff Law
2015-10-28 11:53             ` Bernd Schmidt
2015-10-28 13:02               ` Bernd Schmidt
2015-10-29 16:20               ` David Malcolm
2015-10-29 19:38                 ` Jeff Law [this message]
2015-10-29 22:32                   ` Mike Stump
2015-10-30  3:59                     ` Jeff Law
2015-10-29 19:21               ` Jeff Law
2015-10-30 10:54                 ` Bernd Schmidt
2015-10-30 16:08                   ` Jeff Law
2015-11-16 18:17                     ` Bernd Schmidt
2015-11-16 18:48                       ` David Malcolm
2015-11-16 21:22                         ` Bernd Schmidt
2015-11-16 23:12                         ` Jeff Law
2015-11-17  1:54                           ` Mike Stump
2015-11-17 12:51                             ` Bernd Schmidt
2015-11-17 18:06                               ` Jeff Law
2015-11-19 16:46                       ` [PATCH 00/15] Unittests framework v4: -fself-test David Malcolm
2015-11-19 16:46                         ` [PATCH 06/15] Add function-tests.c David Malcolm
2015-11-19 16:46                         ` [PATCH 13/15] Add selftests to tree.c David Malcolm
2015-11-19 16:46                         ` [PATCH 14/15] Add selftests to vec.c David Malcolm
2015-11-19 16:46                         ` [PATCH 01/15] Selftest framework (unittests v4) David Malcolm
2015-11-19 17:35                           ` Bernd Schmidt
2015-11-19 18:08                             ` David Malcolm
2015-11-19 18:15                               ` Mike Stump
2015-11-19 18:44                               ` Bernd Schmidt
2015-11-19 20:04                                 ` Mikhail Maltsev
2015-11-24 20:45                                 ` Jeff Law
2015-11-25  2:43                                   ` David Malcolm
2015-11-25 10:56                                     ` Bernd Schmidt
2015-11-25 16:57                                       ` Mike Stump
2015-11-29 18:10                                         ` Jeff Law
2015-11-25 22:58                                       ` David Malcolm
2015-11-25  7:43                                   ` Trevor Saunders
2015-11-25 22:53                                 ` David Malcolm
2015-11-26 13:00                                   ` Bernd Schmidt
2015-11-30 23:05                                     ` Jeff Law
2015-11-24 20:29                             ` Jeff Law
2015-11-24 22:43                           ` Jeff Law
2015-11-19 16:46                         ` [PATCH 04/15] Add selftests to et-forest.c David Malcolm
2015-11-19 16:46                         ` [PATCH 15/15] RFC: Add ggc-tests.c David Malcolm
2015-11-19 16:46                         ` [PATCH 07/15] Fix warning in function-tests.c David Malcolm
2015-11-19 16:46                         ` [PATCH 03/15] Add selftests to tree-cfg.c David Malcolm
2015-11-19 16:46                         ` [PATCH 08/15] Add selftests to gimple.c David Malcolm
2015-11-19 16:46                         ` [PATCH 09/15] Add hash-map-tests.c David Malcolm
2015-11-19 16:46                         ` [PATCH 05/15] Add selftests to fold-const.c David Malcolm
2015-11-19 16:46                         ` [PATCH 02/15] Add selftests to bitmap.c David Malcolm
2015-11-20 10:41                           ` Richard Biener
2015-11-24 21:13                           ` Jeff Law
2015-11-19 16:46                         ` [PATCH 10/15] Add hash-set-tests.c David Malcolm
2015-11-19 17:03                         ` [PATCH 12/15] Add rtl-tests.c David Malcolm
2015-11-19 17:03                         ` [PATCH 11/15] Add selftests to input.c David Malcolm
2016-06-01 20:54                         ` [PATCH 00/21] Add -fself-test framework for fast, early unit-testing (unittests v5) David Malcolm
2016-06-01 20:54                           ` [PATCH 04/21] Add -fself-test-regex= David Malcolm
2016-06-01 20:54                           ` [PATCH 07/21] Add selftests to bitmap.c David Malcolm
2016-06-01 20:54                           ` [PATCH 03/21] Various selftest::runner tweaks David Malcolm
2016-06-01 20:54                           ` [PATCH 09/21] Add selftests to et-forest.c David Malcolm
2016-06-01 20:54                           ` [PATCH 02/21] Makefile.in integration David Malcolm
2016-06-01 20:54                           ` [PATCH 17/21] Add hash-set-tests.c David Malcolm
2016-06-01 20:54                           ` [PATCH 18/21] Add selftests to input.c David Malcolm
2016-06-01 20:54                           ` [PATCH 20/21] Add selftests to tree.c David Malcolm
2016-06-01 20:54                           ` [PATCH 01/21] Selftest framework (unittests v5) David Malcolm
2016-06-01 20:54                           ` [PATCH 10/21] Add selftests to fold-const.c David Malcolm
2016-06-01 21:09                           ` [PATCH 12/21] Fix warning in function-tests.c David Malcolm
2016-06-01 21:10                           ` [PATCH 21/21] Add selftests to vec.c David Malcolm
2016-06-01 21:10                           ` [PATCH 06/21] Convert Levenshtein test from a plugin to a selftest David Malcolm
2016-06-01 21:10                           ` [PATCH 11/21] Add function-tests.c David Malcolm
2016-06-01 21:10                           ` [PATCH 08/21] Add selftests to tree-cfg.c David Malcolm
2016-06-01 21:11                           ` [PATCH 16/21] Add hash-map-tests.c David Malcolm
2016-06-01 21:20                           ` [PATCH 00/21] Add -fself-test framework for fast, early unit-testing (unittests v5) Sandra Loosemore
2016-06-02 13:08                             ` David Malcolm
2016-06-01 21:21                           ` [PATCH 05/21] Add selftests for diagnostic-show-locus.c David Malcolm
2016-06-01 21:22                           ` [PATCH 19/21] Add rtl-tests.c David Malcolm
2016-06-01 21:23                           ` [PATCH 15/21] Add selftests to gimple.c David Malcolm
2016-06-01 21:26                           ` [PATCH 14/21] Remove x86_64-isms in function-tests.c David Malcolm
2016-06-01 21:29                           ` [PATCH 13/21] Fixup to function-tests.c David Malcolm
2016-06-02 10:30                           ` [PATCH 00/21] Add -fself-test framework for fast, early unit-testing (unittests v5) Bernd Schmidt
2016-06-02 13:41                             ` David Malcolm
2016-06-02 20:41                               ` [PATCH 00/16] v6 of -fself-test/unit-testing patch David Malcolm
2016-06-02 20:41                                 ` [PATCH 01/16] Core of selftest framework (v6) David Malcolm
2016-06-02 23:21                                   ` Bernd Schmidt
2016-06-03 18:47                                     ` [PATCH] Selftest framework (v7) David Malcolm
2016-06-05 11:38                                       ` Bernd Schmidt
2016-06-06 14:17                                         ` David Malcolm
2016-06-06 14:41                                           ` Bernd Schmidt
2016-06-06 17:18                                             ` [Committed] Selftest framework (v8) David Malcolm
2016-06-06 21:47                                           ` [PATCH] Selftest framework (v7) Trevor Saunders
2016-06-06 21:57                                             ` Jakub Jelinek
2016-06-07  2:07                                               ` Trevor Saunders
2016-06-07 14:18                                                 ` David Malcolm
2016-06-08  0:23                                                   ` Trevor Saunders
2016-06-02 20:41                                 ` [PATCH 10/16] Add hash-map-tests.c David Malcolm
2016-06-02 20:41                                 ` [PATCH 02/16] diagnostic-show-locus.c: add selftests David Malcolm
2016-06-02 20:41                                 ` [PATCH 03/16] spellcheck.c: convert Levenshtein test from a plugin to a selftest David Malcolm
2016-06-02 20:41                                 ` [PATCH 04/16] bitmap.c: add selftests David Malcolm
2016-06-02 20:41                                 ` [PATCH 09/16] gimple.c: " David Malcolm
2016-06-02 20:41                                 ` [PATCH 05/16] tree-cfg.c: " David Malcolm
2016-06-02 20:57                                 ` [PATCH 08/16] Add function-tests.c David Malcolm
2016-06-02 20:58                                 ` [PATCH 14/16] tree.c: add selftests David Malcolm
2016-06-02 21:03                                 ` [PATCH 12/16] input.c: " David Malcolm
2016-06-02 21:03                                 ` [PATCH 13/16] Add rtl-tests.c David Malcolm
2016-06-02 21:03                                 ` [PATCH 16/16] wide-int.cc: add selftests David Malcolm
2016-06-02 21:06                                 ` [PATCH 15/16] vec.c: " David Malcolm
2016-06-02 21:09                                 ` [PATCH 07/16] fold-const.c: " David Malcolm
2016-06-02 21:09                                 ` [PATCH 11/16] Add hash-set-tests.c David Malcolm
2016-06-02 21:09                                 ` [PATCH 06/16] et-forest.c: add selftests David Malcolm
2015-10-28 16:05             ` [PATCH 00/16] Unit tests framework (v3) Jeff Law
2015-10-28 20:26             ` Mike Stump
2015-06-23 19:06     ` [PATCH 00/17] RFC: Addding a unit testing framework to gcc Jeff Law
2015-06-23 20:04     ` Mike Stump
2015-06-10 18:21   ` David Malcolm
2015-06-10 22:15     ` Jakub Jelinek
2015-06-11 14:49 ` Martin Liška

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5632745A.6040004@redhat.com \
    --to=law@redhat.com \
    --cc=bschmidt@redhat.com \
    --cc=dmalcolm@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).