[gcc(refs/users/aoliva/heads/testme)] tighten funcspec regexps

Alexandre Oliva aoliva@gcc.gnu.org
Wed Mar 24 06:29:13 GMT 2021


https://gcc.gnu.org/g:7e7d07cd50c51806379ea890b50a52a25f12232d

commit 7e7d07cd50c51806379ea890b50a52a25f12232d
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Mar 23 09:28:14 2021 -0300

    tighten funcspec regexps
    
    In -mcmodel=large, callee symbols are pulled ahead of the call insns.
    
    The patterns in funcspec-[12].c tests in gcc.target/i386 match even
    line breaks between 'call' and a function symbol expected to be
    called, however, so it ends up unexpectedly matching a previous,
    unrelated indirect call, up to the insn that loads the address of the
    intended callee to a register, for all but the first callee, that
    doesn't have a call insn before it.
    
    All of these apparent passes are false positives.  We are NOT
    generating the expected call insns.
    
    This patch fixes only the patterns, so that they won't trigger false
    positives any more.  There are several dozens of other tests that fail
    with -mcmodel=large for similar reasons, but I'm still not sure about
    how to deal with them.  I see no point in holding up this small
    improvement over the lack of a larger solution of a different problem,
    though.
    
    
    for  gcc/testsuite/ChangeLog
    
            * gcc.target/i386/funcspec-2.c: Tighten regexps to avoid false
            positives with -mcmodel=large.
            * gcc.target/i386/funcspec-3.c: Likewise.

Diff:
---
 gcc/testsuite/gcc.target/i386/funcspec-2.c | 16 ++++++++--------
 gcc/testsuite/gcc.target/i386/funcspec-3.c |  6 +++---
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/gcc/testsuite/gcc.target/i386/funcspec-2.c b/gcc/testsuite/gcc.target/i386/funcspec-2.c
index d607fbc79c9..147f62321fd 100644
--- a/gcc/testsuite/gcc.target/i386/funcspec-2.c
+++ b/gcc/testsuite/gcc.target/i386/funcspec-2.c
@@ -89,11 +89,11 @@ int main ()
 /* { dg-final { scan-assembler "vfnmaddsd" } } */
 /* { dg-final { scan-assembler "vfnmsubss" } } */
 /* { dg-final { scan-assembler "vfnmsubsd" } } */
-/* { dg-final { scan-assembler "call\t(.*)flt_mul_add" } } */
-/* { dg-final { scan-assembler "call\t(.*)flt_mul_sub" } } */
-/* { dg-final { scan-assembler "call\t(.*)flt_neg_mul_add" } } */
-/* { dg-final { scan-assembler "call\t(.*)flt_neg_mul_sub" } } */
-/* { dg-final { scan-assembler "call\t(.*)dbl_mul_add" } } */
-/* { dg-final { scan-assembler "call\t(.*)dbl_mul_sub" } } */
-/* { dg-final { scan-assembler "call\t(.*)dbl_neg_mul_add" } } */
-/* { dg-final { scan-assembler "call\t(.*)dbl_neg_mul_sub" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)flt_mul_add" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)flt_mul_sub" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)flt_neg_mul_add" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)flt_neg_mul_sub" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)dbl_mul_add" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)dbl_mul_sub" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)dbl_neg_mul_add" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)dbl_neg_mul_sub" } } */
diff --git a/gcc/testsuite/gcc.target/i386/funcspec-3.c b/gcc/testsuite/gcc.target/i386/funcspec-3.c
index 613a1a0fb95..8fb425b925a 100644
--- a/gcc/testsuite/gcc.target/i386/funcspec-3.c
+++ b/gcc/testsuite/gcc.target/i386/funcspec-3.c
@@ -63,6 +63,6 @@ int main ()
 /* { dg-final { scan-assembler "popcntl" { target { ! *-*-darwin* } } } } */
 /* { dg-final { scan-assembler "popcntq" { target { ! *-*-darwin* } } } } */
 /* { dg-final { scan-assembler-times "popcnt" 2 { target *-*-darwin* } } } */
-/* { dg-final { scan-assembler "call\t(.*)sse4a_pop_i" } } */
-/* { dg-final { scan-assembler "call\t(.*)sse42_pop_l" } } */
-/* { dg-final { scan-assembler "call\t(.*)popcountdi2" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)sse4a_pop_i" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)sse42_pop_l" } } */
+/* { dg-final { scan-assembler "call\t(\[^\n\r\]*)popcountdi2" } } */


More information about the Gcc-cvs mailing list