public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/aoliva/heads/testme)] tighten funcspec regexps
@ 2021-03-23 12:33 Alexandre Oliva
  0 siblings, 0 replies; 2+ messages in thread
From: Alexandre Oliva @ 2021-03-23 12:33 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:4f262a7104dc0d9ad099a263613bb9062c3d8a46

commit 4f262a7104dc0d9ad099a263613bb9062c3d8a46
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" } } */


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [gcc(refs/users/aoliva/heads/testme)] tighten funcspec regexps
@ 2021-03-24  6:29 Alexandre Oliva
  0 siblings, 0 replies; 2+ messages in thread
From: Alexandre Oliva @ 2021-03-24  6:29 UTC (permalink / raw)
  To: gcc-cvs

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" } } */


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-03-24  6:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-23 12:33 [gcc(refs/users/aoliva/heads/testme)] tighten funcspec regexps Alexandre Oliva
2021-03-24  6:29 Alexandre Oliva

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).