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