This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
r273869 - in /trunk/gcc: ChangeLog doc/sourcebu...
- From: rsandifo at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: Mon, 29 Jul 2019 08:46:46 -0000
- Subject: r273869 - in /trunk/gcc: ChangeLog doc/sourcebu...
Author: rsandifo
Date: Mon Jul 29 08:46:46 2019
New Revision: 273869
URL: https://gcc.gnu.org/viewcvs?rev=273869&root=gcc&view=rev
Log:
Add dg test for matching function bodies
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 overly 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
scan-assembler.
The regexps in parse_function_bodies are fairly general, but might
still need to be extended in future for targets like Darwin or AIX.
2019-07-29 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* doc/sourcebuild.texi (check-function-bodies): Document.
gcc/testsuite/
* 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.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/doc/sourcebuild.texi
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_1.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_10.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_11.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_12.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_2.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_3.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_4.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_5.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_6.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_7.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_8.c
trunk/gcc/testsuite/gcc.target/aarch64/sve/init_9.c
trunk/gcc/testsuite/lib/scanasm.exp