* gcc.dg/visibility-12.c: New test.
* gcc.dg/visibility-13.c: Likewise.
* g++.dg/ext/visibility-9.C: Likewise.
* g++.dg/ext/visibility-10.C: Likewise.
From-SVN: r126330
+2007-07-04 Mark Mitchell <mark@codesourcery.com>
+
+ * gcc.dg/visibility-12.c: New test.
+ * gcc.dg/visibility-13.c: Likewise.
+ * g++.dg/ext/visibility-9.C: Likewise.
+ * g++.dg/ext/visibility-10.C: Likewise.
+
2007-07-04 Richard Sandiford <richard@codesourcery.com>
* gcc.dg/sh-relax.c: Skip for VxWorks if non-PIC.
PR fortran/32298
* gfortran.dg/minmaxloc_2.f90: New test.
-2007-06-23 Mark Mitchell <mark@codesourcery.com>
-
- * gcc.dg/visibility-12.c: New test.
- * gcc.dg/visibility-13.c: Likewise.
- * g++.dg/ext/visibility-9.C: Likewise.
- * g++.dg/ext/visibility-10.C: Likewise.
-
2007-06-23 Richard Guenther <rguenther@suse.de>
PR tree-optimization/16876
--- /dev/null
+// { dg-require-visibility "" }
+// { dg-require-dll "" }
+
+extern void __attribute__((dllimport, visibility("hidden")))
+ f1(); // { dg-error "visibility" }
+extern void __attribute__((visibility("hidden"), dllimport))
+ f2(); // { dg-error "visibility" }
+extern void __attribute__((dllexport, visibility("hidden")))
+ f3(); // { dg-error "visibility" }
+extern void __attribute__((visibility("hidden"), dllexport))
+ f4(); // { dg-error "visibility" }
+extern void __attribute__((visibility("default"), dllimport))
+ f5();
+extern void __attribute__((dllimport, visibility("default")))
+ f6();
+extern void __attribute__((visibility("default"), dllexport))
+ f7();
+extern void __attribute__((dllexport, visibility("default")))
+ f8();
--- /dev/null
+// Test that dllimport'd functions have default visibility.
+// { dg-require-visibility "" }
+// { dg-require-dll "" }
+// { dg-options "-fvisibility=hidden" }
+// { dg-final { scan-not-hidden "_Z2f1v" } }
+// { dg-final { scan-not-hidden "_ZN1S2f3Ev" } }
+
+extern void __attribute__((dllimport)) f1();
+void f2() {
+ f1();
+}
+
+struct __attribute__((visibility("hidden")) S1 {
+ __attribute__((dllimport)) void f3();
+};
+
+void f4() {
+ S1 s1;
+ s1.f3();
+}
+
+struct S2 {
+ __attribute__((dllimport)) void f5();
+};
+
+void f6() {
+ S2 s2;
+ s2.f5();
+}
--- /dev/null
+/* Test that dllimport'd functions have default visibility. */
+/* { dg-require-visibility "" } */
+/* { dg-require-dll "" } */
+/* { dg-options "-fvisibility=hidden" } */
+/* { dg-final { scan-not-hidden "f1" } } */
+
+extern void __attribute__((dllimport)) f1();
+void f2() {
+ f1();
+}
--- /dev/null
+/* { dg-require-visibility "" } */
+/* { dg-require-dll "" } */
+
+extern void __attribute__((dllimport, visibility("hidden")))
+ f1(); /* { dg-error "visibility" } */
+extern void __attribute__((visibility("hidden"), dllimport))
+ f2(); /* { dg-error "visibility" } */
+extern void __attribute__((dllexport, visibility("hidden")))
+ f3(); /* { dg-error "visibility" } */
+extern void __attribute__((visibility("hidden"), dllexport))
+ f4(); /* { dg-error "visibility" } */
+extern void __attribute__((visibility("default"), dllimport))
+ f5();
+extern void __attribute__((dllimport, visibility("default")))
+ f6();
+extern void __attribute__((visibility("default"), dllexport))
+ f7();
+extern void __attribute__((dllexport, visibility("default")))
+ f8();