This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Deeply nested visibility pragma testcase


Hi!

While backporting PR middle-end/20303 to gcc-3_4-rhl-branch,
I have created a testcase for it.

Is this ok for HEAD?

2005-07-22  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/20303
	* gcc.dg/visibility-d.c: New test.

--- gcc/testsuite/gcc.dg/visibility-d.c.jj	2005-07-22 11:58:19.000000000 +0200
+++ gcc/testsuite/gcc.dg/visibility-d.c	2005-07-22 11:59:20.000000000 +0200
@@ -0,0 +1,205 @@
+/* PR middle-end/20303 */
+/* Test nesting of #pragma GCC visibility. */
+/* { dg-do compile } */
+/* { dg-require-visibility "" } */
+/* { dg-final { scan-not-hidden "foo00" } } */
+/* { dg-final { scan-hidden "foo01" } } */
+/* { dg-final { scan-not-hidden "foo02" } } */
+/* { dg-final { scan-hidden "foo03" } } */
+/* { dg-final { scan-not-hidden "foo04" } } */
+/* { dg-final { scan-not-hidden "foo05" } } */
+/* { dg-final { scan-not-hidden "foo06" } } */
+/* { dg-final { scan-hidden "foo07" } } */
+/* { dg-final { scan-not-hidden "foo08" } } */
+/* { dg-final { scan-hidden "foo09" } } */
+/* { dg-final { scan-not-hidden "foo10" } } */
+/* { dg-final { scan-hidden "foo11" } } */
+/* { dg-final { scan-hidden "foo12" } } */
+/* { dg-final { scan-hidden "foo13" } } */
+/* { dg-final { scan-not-hidden "foo14" } } */
+/* { dg-final { scan-hidden "foo15" } } */
+/* { dg-final { scan-not-hidden "foo16" } } */
+/* { dg-final { scan-hidden "foo17" } } */
+/* { dg-final { scan-not-hidden "foo18" } } */
+/* { dg-final { scan-hidden "foo19" } } */
+/* { dg-final { scan-not-hidden "foo20" } } */
+/* { dg-final { scan-hidden "foo21" } } */
+/* { dg-final { scan-not-hidden "foo22" } } */
+/* { dg-final { scan-hidden "foo23" } } */
+/* { dg-final { scan-not-hidden "foo24" } } */
+/* { dg-final { scan-hidden "foo25" } } */
+/* { dg-final { scan-not-hidden "foo26" } } */
+/* { dg-final { scan-hidden "foo27" } } */
+/* { dg-final { scan-not-hidden "foo28" } } */
+/* { dg-final { scan-hidden "foo29" } } */
+/* { dg-final { scan-not-hidden "foo30" } } */
+/* { dg-final { scan-hidden "foo31" } } */
+/* { dg-final { scan-not-hidden "foo32" } } */
+/* { dg-final { scan-hidden "foo33" } } */
+/* { dg-final { scan-not-hidden "foo34" } } */
+/* { dg-final { scan-hidden "foo35" } } */
+/* { dg-final { scan-not-hidden "foo36" } } */
+/* { dg-final { scan-hidden "foo37" } } */
+/* { dg-final { scan-not-hidden "foo38" } } */
+/* { dg-final { scan-hidden "foo39" } } */
+/* { dg-final { scan-not-hidden "foo40" } } */
+/* { dg-final { scan-hidden "foo41" } } */
+/* { dg-final { scan-not-hidden "foo42" } } */
+/* { dg-final { scan-hidden "foo43" } } */
+/* { dg-final { scan-not-hidden "foo44" } } */
+/* { dg-final { scan-hidden "foo45" } } */
+/* { dg-final { scan-hidden "foo46" } } */
+/* { dg-final { scan-hidden "foo47" } } */
+/* { dg-final { scan-not-hidden "foo48" } } */
+/* { dg-final { scan-hidden "foo49" } } */
+/* { dg-final { scan-not-hidden "foo50" } } */
+/* { dg-final { scan-hidden "foo51" } } */
+/* { dg-final { scan-not-hidden "foo52" } } */
+/* { dg-final { scan-not-hidden "foo53" } } */
+/* { dg-final { scan-not-hidden "foo54" } } */
+/* { dg-final { scan-hidden "foo55" } } */
+/* { dg-final { scan-not-hidden "foo56" } } */
+/* { dg-final { scan-hidden "foo57" } } */
+/* { dg-final { scan-not-hidden "foo58" } } */
+/* { dg-final { scan-hidden "foo59" } } */
+
+#pragma GCC visibility push(default)
+void foo00();
+#pragma GCC visibility push(hidden)
+void foo01();
+#pragma GCC visibility push(default)
+void foo02();
+#pragma GCC visibility push(hidden)
+void foo03();
+#pragma GCC visibility push(default)
+void foo04();
+#pragma GCC visibility push(default)
+void foo05();
+#pragma GCC visibility push(default)
+void foo06();
+#pragma GCC visibility push(hidden)
+void foo07();
+#pragma GCC visibility push(default)
+void foo08();
+#pragma GCC visibility push(hidden)
+void foo09();
+#pragma GCC visibility push(default)
+void foo10();
+#pragma GCC visibility push(hidden)
+void foo11();
+#pragma GCC visibility push(hidden)
+void foo12();
+#pragma GCC visibility push(hidden)
+void foo13();
+#pragma GCC visibility push(default)
+void foo14();
+#pragma GCC visibility push(hidden)
+void foo15();
+#pragma GCC visibility push(default)
+void foo16();
+#pragma GCC visibility push(hidden)
+void foo17();
+#pragma GCC visibility push(default)
+void foo18();
+#pragma GCC visibility push(hidden)
+void foo19();
+#pragma GCC visibility push(default)
+void foo20();
+#pragma GCC visibility push(hidden)
+void foo21();
+#pragma GCC visibility push(default)
+void foo22();
+#pragma GCC visibility push(hidden)
+void foo23();
+#pragma GCC visibility push(default)
+void foo24();
+#pragma GCC visibility push(hidden)
+void foo25();
+#pragma GCC visibility push(default)
+void foo26();
+#pragma GCC visibility push(hidden)
+void foo27();
+#pragma GCC visibility push(default)
+void foo28();
+#pragma GCC visibility push(hidden)
+void foo29();
+#pragma GCC visibility pop
+void foo30();
+#pragma GCC visibility pop
+void foo31();
+#pragma GCC visibility pop
+void foo32();
+#pragma GCC visibility pop
+void foo33();
+#pragma GCC visibility pop
+void foo34();
+#pragma GCC visibility pop
+void foo35();
+#pragma GCC visibility pop
+void foo36();
+#pragma GCC visibility pop
+void foo37();
+#pragma GCC visibility pop
+void foo38();
+#pragma GCC visibility pop
+void foo39();
+#pragma GCC visibility pop
+void foo40();
+#pragma GCC visibility pop
+void foo41();
+#pragma GCC visibility pop
+void foo42();
+#pragma GCC visibility pop
+void foo43();
+#pragma GCC visibility pop
+void foo44();
+#pragma GCC visibility pop
+void foo45();
+#pragma GCC visibility pop
+void foo46();
+#pragma GCC visibility pop
+void foo47();
+#pragma GCC visibility pop
+void foo48();
+#pragma GCC visibility pop
+void foo49();
+#pragma GCC visibility pop
+void foo50();
+#pragma GCC visibility pop
+void foo51();
+#pragma GCC visibility pop
+void foo52();
+#pragma GCC visibility pop
+void foo53();
+#pragma GCC visibility pop
+void foo54();
+#pragma GCC visibility pop
+void foo55();
+#pragma GCC visibility pop
+void foo56();
+#pragma GCC visibility pop
+void foo57();
+#pragma GCC visibility pop
+void foo58();
+#pragma GCC visibility push (hidden)
+void foo59();
+#pragma GCC visibility pop
+#pragma GCC visibility pop
+
+#define D(N) \
+void foo##N##0() { } \
+void foo##N##1() { } \
+void foo##N##2() { } \
+void foo##N##3() { } \
+void foo##N##4() { } \
+void foo##N##5() { } \
+void foo##N##6() { } \
+void foo##N##7() { } \
+void foo##N##8() { } \
+void foo##N##9() { }
+D(0)
+D(1)
+D(2)
+D(3)
+D(4)
+D(5)

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]