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) 206