This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Patch,testsuite]: Skip -fschedule-insns if no scheduling available.
- From: Georg-Johann Lay <avr at gjlay dot de>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Mike Stump <mikestump at comcast dot net>, Rainer Orth <ro at CeBiTec dot Uni-Bielefeld dot DE>
- Date: Fri, 08 Jul 2011 16:25:09 +0200
- Subject: [Patch,testsuite]: Skip -fschedule-insns if no scheduling available.
There are tests in suite that set -fschedule-insns[2] and FAIL because of
warning: instruction scheduling not supported on this target machine
[enabled by default]
As there is no individual switch do disable the warning, the patch
disables some test cases so reduce the overall "noise of false test
fails".
There is no proc for that yet, so I wrote one. Lightly tested with my
testsuite: get now UNSUPPORTED instead of FAIL.
Ok to commit?
Johann
* lib/target-supports.exp (check_effective_target_scheduling):
New Function.
* gcc.dg/pr46614.c: Add dg-require-effective-target scheduling.
* gcc.dg/pr45055.c: Ditto.
* gcc.dg/pr45353.c: Ditto.
* g++.dg/pr45056.C: Ditto.
Index: lib/target-supports.exp
===================================================================
--- lib/target-supports.exp (revision 176044)
+++ lib/target-supports.exp (working copy)
@@ -712,6 +712,14 @@ proc check_effective_target_function_sec
} "-ffunction-sections"]
}
+# Return 1 if instruction scheduling is available, 0 otherwise.
+
+proc check_effective_target_scheduling {} {
+ return [check_no_compiler_messages scheduling object {
+ void foo (void) { }
+ } "-fschedule-insns"]
+}
+
# Return 1 if compilation with -fgraphite is error-free for trivial
# code, 0 otherwise.
Index: gcc.dg/pr46614.c
===================================================================
--- gcc.dg/pr46614.c (revision 176044)
+++ gcc.dg/pr46614.c (working copy)
@@ -1,6 +1,7 @@
/* PR rtl-optimization/46614 */
/* { dg-do run } */
/* { dg-options "-O -fno-rename-registers -fsched2-use-superblocks -fschedule-insns2 -funroll-loops" } */
+/* { dg-require-effective-target scheduling } */
extern void abort (void);
Index: gcc.dg/pr45055.c
===================================================================
--- gcc.dg/pr45055.c (revision 176044)
+++ gcc.dg/pr45055.c (working copy)
@@ -1,6 +1,7 @@
/* PR debug/45055 */
/* { dg-do compile } */
/* { dg-options "-O2 -ftracer -fsched-pressure -funroll-loops -fschedule-insns -fcompare-debug" } */
+/* { dg-require-effective-target scheduling } */
int colormap[10];
Index: gcc.dg/pr45353.c
===================================================================
--- gcc.dg/pr45353.c (revision 176044)
+++ gcc.dg/pr45353.c (working copy)
@@ -1,6 +1,7 @@
/* PR rtl-optimization/45353 */
/* { dg-do compile } */
/* { dg-options "-O2 -fschedule-insns -fselective-scheduling" } */
+/* { dg-require-effective-target scheduling } */
void
foo ()
Index: g++.dg/pr45056.C
===================================================================
--- g++.dg/pr45056.C (revision 176044)
+++ g++.dg/pr45056.C (working copy)
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -fschedule-insns2 -fschedule-insns -g" } */
+/* { dg-require-effective-target scheduling } */
template < class _T1, class _T2 > struct pair
{