aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2009-01-07 23:53:03 +0000
committerJoseph Myers <jsm28@gcc.gnu.org>2009-01-07 23:53:03 +0000
commit8a0963c32789e582dc5b60e71822ee6fe5db40e9 (patch)
treeded040516e1b86fef5c43a9bf45e66bc0e5ea049 /gcc
parent7da13f1d80b35d3e00ef1a4c785f49f58d8fa767 (diff)
downloadgcc-8a0963c32789e582dc5b60e71822ee6fe5db40e9.zip
gcc-8a0963c32789e582dc5b60e71822ee6fe5db40e9.tar.gz
gcc-8a0963c32789e582dc5b60e71822ee6fe5db40e9.tar.bz2
target-supports.exp (check_weak_override_available): New.
* lib/target-supports.exp (check_weak_override_available): New. * lib/target-supports-dg.exp (dg-require-weak-override): New. * gcc.dg/tree-ssa/pr27781.c, g++.dg/eh/weak1.C: Use dg-require-weak-override. From-SVN: r143172
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/g++.dg/eh/weak1.C2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr27781.c2
-rw-r--r--gcc/testsuite/lib/target-supports-dg.exp15
-rw-r--r--gcc/testsuite/lib/target-supports.exp14
5 files changed, 38 insertions, 2 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ccd555e..196f191 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2009-01-07 Joseph Myers <joseph@codesourcery.com>
+
+ * lib/target-supports.exp (check_weak_override_available): New.
+ * lib/target-supports-dg.exp (dg-require-weak-override): New.
+ * gcc.dg/tree-ssa/pr27781.c, g++.dg/eh/weak1.C: Use
+ dg-require-weak-override.
+
2009-01-07 Nathan Froyd <froydnj@codesourcery.com>
Alan Modra <amodra@bigpond.net.au>
diff --git a/gcc/testsuite/g++.dg/eh/weak1.C b/gcc/testsuite/g++.dg/eh/weak1.C
index 4dd08d1..f78d195 100644
--- a/gcc/testsuite/g++.dg/eh/weak1.C
+++ b/gcc/testsuite/g++.dg/eh/weak1.C
@@ -1,6 +1,6 @@
// PR target/29487
// { dg-do run { xfail { hppa*-*-hpux* && { ! hppa*64*-*-* } } } }
-// { dg-require-weak "" }
+// { dg-require-weak-override "" }
// { dg-additional-sources "weak1-a.cc" }
// { dg-options "-O2" }
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c b/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c
index 0e1a02a..233c93d 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-require-weak "" } */
+/* { dg-require-weak-override "" } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
void __attribute__((weak)) func(void)
diff --git a/gcc/testsuite/lib/target-supports-dg.exp b/gcc/testsuite/lib/target-supports-dg.exp
index 321daac..fe6453b 100644
--- a/gcc/testsuite/lib/target-supports-dg.exp
+++ b/gcc/testsuite/lib/target-supports-dg.exp
@@ -45,6 +45,21 @@ proc dg-require-weak { args } {
}
}
+# If this target does not support overriding weak symbols, skip this
+# test.
+
+proc dg-require-weak-override { args } {
+ set weak_override_available [ check_weak_override_available ]
+ if { $weak_override_available == -1 } {
+ upvar name name
+ unresolved "$name"
+ }
+ if { $weak_override_available != 1 } {
+ upvar dg-do-what dg-do-what
+ set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
+ }
+}
+
# If this target does not support the "visibility" attribute, skip this
# test.
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 79e77f2..0eb40c6 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -251,6 +251,20 @@ proc check_weak_available { } {
}
###############################
+# proc check_weak_override_available { }
+###############################
+
+# Like check_weak_available, but return 0 if weak symbol definitions
+# cannot be overridden.
+
+proc check_weak_override_available { } {
+ if { [istarget "*-*-mingw*"] } {
+ return 0
+ }
+ return [check_weak_available]
+}
+
+###############################
# proc check_visibility_available { what_kind }
###############################