(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
visibility-d.c
       1  /* PR middle-end/20303 */
       2  /* Test nesting of #pragma GCC visibility. */
       3  /* { dg-do compile } */
       4  /* { dg-require-visibility "" } */
       5  /* { dg-final { scan-not-hidden "foo00" } } */
       6  /* { dg-final { scan-hidden "foo01" } } */
       7  /* { dg-final { scan-not-hidden "foo02" } } */
       8  /* { dg-final { scan-hidden "foo03" } } */
       9  /* { dg-final { scan-not-hidden "foo04" } } */
      10  /* { dg-final { scan-not-hidden "foo05" } } */
      11  /* { dg-final { scan-not-hidden "foo06" } } */
      12  /* { dg-final { scan-hidden "foo07" } } */
      13  /* { dg-final { scan-not-hidden "foo08" } } */
      14  /* { dg-final { scan-hidden "foo09" } } */
      15  /* { dg-final { scan-not-hidden "foo10" } } */
      16  /* { dg-final { scan-hidden "foo11" } } */
      17  /* { dg-final { scan-hidden "foo12" } } */
      18  /* { dg-final { scan-hidden "foo13" } } */
      19  /* { dg-final { scan-not-hidden "foo14" } } */
      20  /* { dg-final { scan-hidden "foo15" } } */
      21  /* { dg-final { scan-not-hidden "foo16" } } */
      22  /* { dg-final { scan-hidden "foo17" } } */
      23  /* { dg-final { scan-not-hidden "foo18" } } */
      24  /* { dg-final { scan-hidden "foo19" } } */
      25  /* { dg-final { scan-not-hidden "foo20" } } */
      26  /* { dg-final { scan-hidden "foo21" } } */
      27  /* { dg-final { scan-not-hidden "foo22" } } */
      28  /* { dg-final { scan-hidden "foo23" } } */
      29  /* { dg-final { scan-not-hidden "foo24" } } */
      30  /* { dg-final { scan-hidden "foo25" } } */
      31  /* { dg-final { scan-not-hidden "foo26" } } */
      32  /* { dg-final { scan-hidden "foo27" } } */
      33  /* { dg-final { scan-not-hidden "foo28" } } */
      34  /* { dg-final { scan-hidden "foo29" } } */
      35  /* { dg-final { scan-not-hidden "foo30" } } */
      36  /* { dg-final { scan-hidden "foo31" } } */
      37  /* { dg-final { scan-not-hidden "foo32" } } */
      38  /* { dg-final { scan-hidden "foo33" } } */
      39  /* { dg-final { scan-not-hidden "foo34" } } */
      40  /* { dg-final { scan-hidden "foo35" } } */
      41  /* { dg-final { scan-not-hidden "foo36" } } */
      42  /* { dg-final { scan-hidden "foo37" } } */
      43  /* { dg-final { scan-not-hidden "foo38" } } */
      44  /* { dg-final { scan-hidden "foo39" } } */
      45  /* { dg-final { scan-not-hidden "foo40" } } */
      46  /* { dg-final { scan-hidden "foo41" } } */
      47  /* { dg-final { scan-not-hidden "foo42" } } */
      48  /* { dg-final { scan-hidden "foo43" } } */
      49  /* { dg-final { scan-not-hidden "foo44" } } */
      50  /* { dg-final { scan-hidden "foo45" } } */
      51  /* { dg-final { scan-hidden "foo46" } } */
      52  /* { dg-final { scan-hidden "foo47" } } */
      53  /* { dg-final { scan-not-hidden "foo48" } } */
      54  /* { dg-final { scan-hidden "foo49" } } */
      55  /* { dg-final { scan-not-hidden "foo50" } } */
      56  /* { dg-final { scan-hidden "foo51" } } */
      57  /* { dg-final { scan-not-hidden "foo52" } } */
      58  /* { dg-final { scan-not-hidden "foo53" } } */
      59  /* { dg-final { scan-not-hidden "foo54" } } */
      60  /* { dg-final { scan-hidden "foo55" } } */
      61  /* { dg-final { scan-not-hidden "foo56" } } */
      62  /* { dg-final { scan-hidden "foo57" } } */
      63  /* { dg-final { scan-not-hidden "foo58" } } */
      64  /* { dg-final { scan-hidden "foo59" } } */
      65  
      66  #pragma GCC visibility push(default)
      67  void foo00();
      68  #pragma GCC visibility push(hidden)
      69  void foo01();
      70  #pragma GCC visibility push(default)
      71  void foo02();
      72  #pragma GCC visibility push(hidden)
      73  void foo03();
      74  #pragma GCC visibility push(default)
      75  void foo04();
      76  #pragma GCC visibility push(default)
      77  void foo05();
      78  #pragma GCC visibility push(default)
      79  void foo06();
      80  #pragma GCC visibility push(hidden)
      81  void foo07();
      82  #pragma GCC visibility push(default)
      83  void foo08();
      84  #pragma GCC visibility push(hidden)
      85  void foo09();
      86  #pragma GCC visibility push(default)
      87  void foo10();
      88  #pragma GCC visibility push(hidden)
      89  void foo11();
      90  #pragma GCC visibility push(hidden)
      91  void foo12();
      92  #pragma GCC visibility push(hidden)
      93  void foo13();
      94  #pragma GCC visibility push(default)
      95  void foo14();
      96  #pragma GCC visibility push(hidden)
      97  void foo15();
      98  #pragma GCC visibility push(default)
      99  void foo16();
     100  #pragma GCC visibility push(hidden)
     101  void foo17();
     102  #pragma GCC visibility push(default)
     103  void foo18();
     104  #pragma GCC visibility push(hidden)
     105  void foo19();
     106  #pragma GCC visibility push(default)
     107  void foo20();
     108  #pragma GCC visibility push(hidden)
     109  void foo21();
     110  #pragma GCC visibility push(default)
     111  void foo22();
     112  #pragma GCC visibility push(hidden)
     113  void foo23();
     114  #pragma GCC visibility push(default)
     115  void foo24();
     116  #pragma GCC visibility push(hidden)
     117  void foo25();
     118  #pragma GCC visibility push(default)
     119  void foo26();
     120  #pragma GCC visibility push(hidden)
     121  void foo27();
     122  #pragma GCC visibility push(default)
     123  void foo28();
     124  #pragma GCC visibility push(hidden)
     125  void foo29();
     126  #pragma GCC visibility pop
     127  void foo30();
     128  #pragma GCC visibility pop
     129  void foo31();
     130  #pragma GCC visibility pop
     131  void foo32();
     132  #pragma GCC visibility pop
     133  void foo33();
     134  #pragma GCC visibility pop
     135  void foo34();
     136  #pragma GCC visibility pop
     137  void foo35();
     138  #pragma GCC visibility pop
     139  void foo36();
     140  #pragma GCC visibility pop
     141  void foo37();
     142  #pragma GCC visibility pop
     143  void foo38();
     144  #pragma GCC visibility pop
     145  void foo39();
     146  #pragma GCC visibility pop
     147  void foo40();
     148  #pragma GCC visibility pop
     149  void foo41();
     150  #pragma GCC visibility pop
     151  void foo42();
     152  #pragma GCC visibility pop
     153  void foo43();
     154  #pragma GCC visibility pop
     155  void foo44();
     156  #pragma GCC visibility pop
     157  void foo45();
     158  #pragma GCC visibility pop
     159  void foo46();
     160  #pragma GCC visibility pop
     161  void foo47();
     162  #pragma GCC visibility pop
     163  void foo48();
     164  #pragma GCC visibility pop
     165  void foo49();
     166  #pragma GCC visibility pop
     167  void foo50();
     168  #pragma GCC visibility pop
     169  void foo51();
     170  #pragma GCC visibility pop
     171  void foo52();
     172  #pragma GCC visibility pop
     173  void foo53();
     174  #pragma GCC visibility pop
     175  void foo54();
     176  #pragma GCC visibility pop
     177  void foo55();
     178  #pragma GCC visibility pop
     179  void foo56();
     180  #pragma GCC visibility pop
     181  void foo57();
     182  #pragma GCC visibility pop
     183  void foo58();
     184  #pragma GCC visibility push (hidden)
     185  void foo59();
     186  #pragma GCC visibility pop
     187  #pragma GCC visibility pop
     188  
     189  #define D(N) \
     190  void foo##N##0() { } \
     191  void foo##N##1() { } \
     192  void foo##N##2() { } \
     193  void foo##N##3() { } \
     194  void foo##N##4() { } \
     195  void foo##N##5() { } \
     196  void foo##N##6() { } \
     197  void foo##N##7() { } \
     198  void foo##N##8() { } \
     199  void foo##N##9() { }
     200  D(0)
     201  D(1)
     202  D(2)
     203  D(3)
     204  D(4)
     205  D(5)