This is the mail archive of the
mailing list for the GCC project.
Re: Add dg test for matching function bodies
- From: Jeff Law <law at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org, richard dot sandiford at arm dot com
- Date: Sun, 21 Jul 2019 14:06:16 -0600
- Subject: Re: Add dg test for matching function bodies
- References: <firstname.lastname@example.org>
On 7/16/19 8:04 AM, Richard Sandiford wrote:
> There isn't a 1:1 mapping from SVE intrinsics to SVE instructions,
> but the intrinsics are still close enough to the instructions for
> there to be a specific preferred sequence (or sometimes choice of
> preferred sequences) for a given combination of operands. Sometimes
> these sequences will be one instruction, sometimes they'll be several.
> I therefore wanted a convenient way of matching the exact assembly
> implementation of a given function. It's possible to do that using
> single scan-assembler lines, but:
> (a) they become hard to read for multiline matches
> (b) the PASS/FAIL lines tend to be long
> (c) it's useful to have a single place that skips over uninteresting
> lines, such as entry block labels and .cfi_* directives, without
> being overly broad
> This patch therefore adds a new check-function-bodies dg-final test
> that looks for specially-formatted comments. As a demo, the patch
> converts the SVE vec_init tests to use the new harness instead of
> The regexps in parse_function_bodies are fairly general, but might
> still need to be extended in future for targets like Darwin or AIX.
> Tested on aarch64-linux-gnu (and x86_64-linux-gnu, somewhat pointlessly
> given the contents of the patch). OK to install?
> 2019-07-16 Richard Sandiford <email@example.com>
> * doc/sourcebuild.texi (check-function-bodies): Document.
> * lib/scanasm.exp (parse_function_bodies, check_function_body)
> (check-function-bodies): New procedures.
> * gcc.target/aarch64/sve/init_1.c: Use check-function-bodies
> instead of scan-assembler.
> * gcc.target/aarch64/sve/init_2.c: Likewise.
> * gcc.target/aarch64/sve/init_3.c: Likewise.
> * gcc.target/aarch64/sve/init_4.c: Likewise.
> * gcc.target/aarch64/sve/init_5.c: Likewise.
> * gcc.target/aarch64/sve/init_6.c: Likewise.
> * gcc.target/aarch64/sve/init_7.c: Likewise.
> * gcc.target/aarch64/sve/init_8.c: Likewise.
> * gcc.target/aarch64/sve/init_9.c: Likewise.
> * gcc.target/aarch64/sve/init_10.c: Likewise.
> * gcc.target/aarch64/sve/init_11.c: Likewise.
> * gcc.target/aarch64/sve/init_12.c: Likewise.