Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 1 | ; These tests are based on clang/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp |
| 2 | ; RUN: llvm-undname < %s | FileCheck %s |
| 3 | |
| 4 | ; CHECK-NOT: Invalid mangled name |
| 5 | |
| 6 | ?foo@@YAXI@Z |
| 7 | ; CHECK: void __cdecl foo(unsigned int) |
| 8 | |
| 9 | ?foo@@YAXN@Z |
| 10 | ; CHECK: void __cdecl foo(double) |
| 11 | |
| 12 | ?foo_pad@@YAXPAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 13 | ; CHECK: void __cdecl foo_pad(char *) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 14 | ?foo_pad@@YAXPEAD@Z |
| 15 | ; CHECK: void __cdecl foo_pad(char *) |
| 16 | |
| 17 | ?foo_pbd@@YAXPBD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 18 | ; CHECK: void __cdecl foo_pbd(char const *) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 19 | ?foo_pbd@@YAXPEBD@Z |
| 20 | ; CHECK: void __cdecl foo_pbd(char const *) |
| 21 | |
| 22 | ?foo_pcd@@YAXPCD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 23 | ; CHECK: void __cdecl foo_pcd(char volatile *) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 24 | ?foo_pcd@@YAXPECD@Z |
| 25 | ; CHECK: void __cdecl foo_pcd(char volatile *) |
| 26 | |
| 27 | ?foo_qad@@YAXQAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 28 | ; CHECK: void __cdecl foo_qad(char *const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 29 | ?foo_qad@@YAXQEAD@Z |
| 30 | ; CHECK: void __cdecl foo_qad(char *const) |
| 31 | |
| 32 | ?foo_rad@@YAXRAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 33 | ; CHECK: void __cdecl foo_rad(char *volatile) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 34 | ?foo_rad@@YAXREAD@Z |
| 35 | ; CHECK: void __cdecl foo_rad(char *volatile) |
| 36 | |
| 37 | ?foo_sad@@YAXSAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 38 | ; CHECK: void __cdecl foo_sad(char *const volatile) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 39 | ?foo_sad@@YAXSEAD@Z |
| 40 | ; CHECK: void __cdecl foo_sad(char *const volatile) |
| 41 | |
| 42 | ?foo_piad@@YAXPIAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 43 | ; CHECK: void __cdecl foo_piad(char *__restrict) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 44 | ?foo_piad@@YAXPEIAD@Z |
| 45 | ; CHECK: void __cdecl foo_piad(char *__restrict) |
| 46 | |
| 47 | ?foo_qiad@@YAXQIAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 48 | ; CHECK: void __cdecl foo_qiad(char *const __restrict) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 49 | ?foo_qiad@@YAXQEIAD@Z |
| 50 | ; CHECK: void __cdecl foo_qiad(char *const __restrict) |
| 51 | |
| 52 | ?foo_riad@@YAXRIAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 53 | ; CHECK: void __cdecl foo_riad(char *volatile __restrict) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 54 | ?foo_riad@@YAXREIAD@Z |
| 55 | ; CHECK: void __cdecl foo_riad(char *volatile __restrict) |
| 56 | |
| 57 | ?foo_siad@@YAXSIAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 58 | ; CHECK: void __cdecl foo_siad(char *const volatile __restrict) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 59 | ?foo_siad@@YAXSEIAD@Z |
| 60 | ; CHECK: void __cdecl foo_siad(char *const volatile __restrict) |
| 61 | |
| 62 | ?foo_papad@@YAXPAPAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 63 | ; CHECK: void __cdecl foo_papad(char **) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 64 | ?foo_papad@@YAXPEAPEAD@Z |
| 65 | ; CHECK: void __cdecl foo_papad(char **) |
| 66 | |
| 67 | ?foo_papbd@@YAXPAPBD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 68 | ; CHECK: void __cdecl foo_papbd(char const **) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 69 | ?foo_papbd@@YAXPEAPEBD@Z |
| 70 | ; CHECK: void __cdecl foo_papbd(char const **) |
| 71 | |
| 72 | ?foo_papcd@@YAXPAPCD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 73 | ; CHECK: void __cdecl foo_papcd(char volatile **) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 74 | ?foo_papcd@@YAXPEAPECD@Z |
| 75 | ; CHECK: void __cdecl foo_papcd(char volatile **) |
| 76 | |
| 77 | ?foo_pbqad@@YAXPBQAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 78 | ; CHECK: void __cdecl foo_pbqad(char *const *) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 79 | ?foo_pbqad@@YAXPEBQEAD@Z |
| 80 | ; CHECK: void __cdecl foo_pbqad(char *const *) |
| 81 | |
| 82 | ?foo_pcrad@@YAXPCRAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 83 | ; CHECK: void __cdecl foo_pcrad(char *volatile *) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 84 | ?foo_pcrad@@YAXPECREAD@Z |
| 85 | ; CHECK: void __cdecl foo_pcrad(char *volatile *) |
| 86 | |
| 87 | ?foo_qapad@@YAXQAPAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 88 | ; CHECK: void __cdecl foo_qapad(char **const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 89 | ?foo_qapad@@YAXQEAPEAD@Z |
| 90 | ; CHECK: void __cdecl foo_qapad(char **const) |
| 91 | |
| 92 | ?foo_rapad@@YAXRAPAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 93 | ; CHECK: void __cdecl foo_rapad(char **volatile) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 94 | ?foo_rapad@@YAXREAPEAD@Z |
| 95 | ; CHECK: void __cdecl foo_rapad(char **volatile) |
| 96 | |
| 97 | ?foo_pbqbd@@YAXPBQBD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 98 | ; CHECK: void __cdecl foo_pbqbd(char const *const *) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 99 | ?foo_pbqbd@@YAXPEBQEBD@Z |
| 100 | ; CHECK: void __cdecl foo_pbqbd(char const *const *) |
| 101 | |
| 102 | ?foo_pbqcd@@YAXPBQCD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 103 | ; CHECK: void __cdecl foo_pbqcd(char volatile *const *) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 104 | ?foo_pbqcd@@YAXPEBQECD@Z |
| 105 | ; CHECK: void __cdecl foo_pbqcd(char volatile *const *) |
| 106 | |
| 107 | ?foo_pcrbd@@YAXPCRBD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 108 | ; CHECK: void __cdecl foo_pcrbd(char const *volatile *) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 109 | ?foo_pcrbd@@YAXPECREBD@Z |
| 110 | ; CHECK: void __cdecl foo_pcrbd(char const *volatile *) |
| 111 | |
| 112 | ?foo_pcrcd@@YAXPCRCD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 113 | ; CHECK: void __cdecl foo_pcrcd(char volatile *volatile *) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 114 | ?foo_pcrcd@@YAXPECRECD@Z |
| 115 | ; CHECK: void __cdecl foo_pcrcd(char volatile *volatile *) |
| 116 | |
| 117 | ?foo_aad@@YAXAAD@Z |
| 118 | ?foo_aad@@YAXAEAD@Z |
| 119 | ; CHECK: void __cdecl foo_aad(char &) |
| 120 | |
| 121 | ?foo_abd@@YAXABD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 122 | ; CHECK: void __cdecl foo_abd(char const &) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 123 | ?foo_abd@@YAXAEBD@Z |
| 124 | ; CHECK: void __cdecl foo_abd(char const &) |
| 125 | |
| 126 | ?foo_aapad@@YAXAAPAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 127 | ; CHECK: void __cdecl foo_aapad(char *&) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 128 | ?foo_aapad@@YAXAEAPEAD@Z |
| 129 | ; CHECK: void __cdecl foo_aapad(char *&) |
| 130 | |
| 131 | ?foo_aapbd@@YAXAAPBD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 132 | ; CHECK: void __cdecl foo_aapbd(char const *&) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 133 | ?foo_aapbd@@YAXAEAPEBD@Z |
| 134 | ; CHECK: void __cdecl foo_aapbd(char const *&) |
| 135 | |
| 136 | ?foo_abqad@@YAXABQAD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 137 | ; CHECK: void __cdecl foo_abqad(char *const &) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 138 | ?foo_abqad@@YAXAEBQEAD@Z |
| 139 | ; CHECK: void __cdecl foo_abqad(char *const &) |
| 140 | |
| 141 | ?foo_abqbd@@YAXABQBD@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 142 | ; CHECK: void __cdecl foo_abqbd(char const *const &) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 143 | ?foo_abqbd@@YAXAEBQEBD@Z |
| 144 | ; CHECK: void __cdecl foo_abqbd(char const *const &) |
| 145 | |
| 146 | ?foo_aay144h@@YAXAAY144H@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 147 | ; CHECK: void __cdecl foo_aay144h(int (&)[5][5]) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 148 | ?foo_aay144h@@YAXAEAY144H@Z |
| 149 | ; CHECK: void __cdecl foo_aay144h(int (&)[5][5]) |
| 150 | |
| 151 | ?foo_aay144cbh@@YAXAAY144$$CBH@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 152 | ; CHECK: void __cdecl foo_aay144cbh(int const (&)[5][5]) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 153 | ?foo_aay144cbh@@YAXAEAY144$$CBH@Z |
| 154 | ; CHECK: void __cdecl foo_aay144cbh(int const (&)[5][5]) |
| 155 | |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 156 | ?foo_qay144h@@YAX$$QAY144H@Z |
| 157 | ; CHECK: void __cdecl foo_qay144h(int (&&)[5][5]) |
| 158 | ?foo_qay144h@@YAX$$QEAY144H@Z |
| 159 | ; CHECK: void __cdecl foo_qay144h(int (&&)[5][5]) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 160 | |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 161 | ?foo_qay144cbh@@YAX$$QAY144$$CBH@Z |
| 162 | ; CHECK: void __cdecl foo_qay144cbh(int const (&&)[5][5]) |
| 163 | ?foo_qay144cbh@@YAX$$QEAY144$$CBH@Z |
| 164 | ; CHECK: void __cdecl foo_qay144cbh(int const (&&)[5][5]) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 165 | |
| 166 | ?foo_p6ahxz@@YAXP6AHXZ@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 167 | ; CHECK: void __cdecl foo_p6ahxz(int (__cdecl *)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 168 | ?foo_p6ahxz@@YAXP6AHXZ@Z |
Zachary Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 169 | ; CHECK: void __cdecl foo_p6ahxz(int (__cdecl *)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 170 | |
| 171 | ?foo_a6ahxz@@YAXA6AHXZ@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 172 | ; CHECK: void __cdecl foo_a6ahxz(int (__cdecl &)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 173 | ?foo_a6ahxz@@YAXA6AHXZ@Z |
Zachary Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 174 | ; CHECK: void __cdecl foo_a6ahxz(int (__cdecl &)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 175 | |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 176 | ?foo_q6ahxz@@YAX$$Q6AHXZ@Z |
| 177 | ; CHECK: void __cdecl foo_q6ahxz(int (__cdecl &&)(void)) |
| 178 | ?foo_q6ahxz@@YAX$$Q6AHXZ@Z |
| 179 | ; CHECK: void __cdecl foo_q6ahxz(int (__cdecl &&)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 180 | |
| 181 | ?foo_qay04h@@YAXQAY04H@Z |
| 182 | ?foo_qay04h@@YAXQEAY04H@Z |
| 183 | ; CHECK: void __cdecl foo_qay04h(int (*const)[5]) |
| 184 | |
| 185 | ?foo_qay04cbh@@YAXQAY04$$CBH@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 186 | ; CHECK: void __cdecl foo_qay04cbh(int const (*const)[5]) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 187 | ?foo_qay04cbh@@YAXQEAY04$$CBH@Z |
| 188 | ; CHECK: void __cdecl foo_qay04cbh(int const (*const)[5]) |
| 189 | |
| 190 | ?foo@@YAXPAY02N@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 191 | ; CHECK: void __cdecl foo(double (*)[3]) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 192 | ?foo@@YAXPEAY02N@Z |
| 193 | ; CHECK: void __cdecl foo(double (*)[3]) |
| 194 | |
| 195 | ?foo@@YAXQAN@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 196 | ; CHECK: void __cdecl foo(double *const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 197 | ?foo@@YAXQEAN@Z |
| 198 | ; CHECK: void __cdecl foo(double *const) |
| 199 | |
| 200 | ?foo_const@@YAXQBN@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 201 | ; CHECK: void __cdecl foo_const(double const *const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 202 | ?foo_const@@YAXQEBN@Z |
| 203 | ; CHECK: void __cdecl foo_const(double const *const) |
| 204 | |
| 205 | ?foo_volatile@@YAXQCN@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 206 | ; CHECK: void __cdecl foo_volatile(double volatile *const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 207 | ?foo_volatile@@YAXQECN@Z |
| 208 | ; CHECK: void __cdecl foo_volatile(double volatile *const) |
| 209 | |
| 210 | ?foo@@YAXPAY02NQBNN@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 211 | ; CHECK: void __cdecl foo(double (*)[3], double const *const, double) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 212 | ?foo@@YAXPEAY02NQEBNN@Z |
| 213 | ; CHECK: void __cdecl foo(double (*)[3], double const *const, double) |
| 214 | |
| 215 | ?foo_fnptrconst@@YAXP6AXQAH@Z@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 216 | ; CHECK: void __cdecl foo_fnptrconst(void (__cdecl *)(int *const)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 217 | ?foo_fnptrconst@@YAXP6AXQEAH@Z@Z |
Zachary Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 218 | ; CHECK: void __cdecl foo_fnptrconst(void (__cdecl *)(int *const)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 219 | |
| 220 | ?foo_fnptrarray@@YAXP6AXQAH@Z@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 221 | ; CHECK: void __cdecl foo_fnptrarray(void (__cdecl *)(int *const)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 222 | ?foo_fnptrarray@@YAXP6AXQEAH@Z@Z |
Zachary Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 223 | ; CHECK: void __cdecl foo_fnptrarray(void (__cdecl *)(int *const)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 224 | |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 225 | ?foo_fnptrbackref1@@YAXP6AXQAH@Z1@Z |
| 226 | ; CHECK: void __cdecl foo_fnptrbackref1(void (__cdecl *)(int *const), void (__cdecl *)(int *const)) |
| 227 | ?foo_fnptrbackref1@@YAXP6AXQEAH@Z1@Z |
| 228 | ; CHECK: void __cdecl foo_fnptrbackref1(void (__cdecl *)(int *const), void (__cdecl *)(int *const)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 229 | |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 230 | ?foo_fnptrbackref2@@YAXP6AXQAH@Z1@Z |
| 231 | ; CHECK: void __cdecl foo_fnptrbackref2(void (__cdecl *)(int *const), void (__cdecl *)(int *const)) |
| 232 | ?foo_fnptrbackref2@@YAXP6AXQEAH@Z1@Z |
| 233 | ; CHECK: void __cdecl foo_fnptrbackref2(void (__cdecl *)(int *const), void (__cdecl *)(int *const)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 234 | |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 235 | ?foo_fnptrbackref3@@YAXP6AXQAH@Z1@Z |
| 236 | ; CHECK: void __cdecl foo_fnptrbackref3(void (__cdecl *)(int *const), void (__cdecl *)(int *const)) |
| 237 | ?foo_fnptrbackref3@@YAXP6AXQEAH@Z1@Z |
| 238 | ; CHECK: void __cdecl foo_fnptrbackref3(void (__cdecl *)(int *const), void (__cdecl *)(int *const)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 239 | |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 240 | ?foo_fnptrbackref4@@YAXP6AXPAH@Z1@Z |
| 241 | ; CHECK: void __cdecl foo_fnptrbackref4(void (__cdecl *)(int *), void (__cdecl *)(int *)) |
| 242 | ?foo_fnptrbackref4@@YAXP6AXPEAH@Z1@Z |
| 243 | ; CHECK: void __cdecl foo_fnptrbackref4(void (__cdecl *)(int *), void (__cdecl *)(int *)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 244 | |
| 245 | ?ret_fnptrarray@@YAP6AXQAH@ZXZ |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 246 | ; CHECK: void (__cdecl * __cdecl ret_fnptrarray(void))(int *const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 247 | ?ret_fnptrarray@@YAP6AXQEAH@ZXZ |
Zachary Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 248 | ; CHECK: void (__cdecl * __cdecl ret_fnptrarray(void))(int *const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 249 | |
| 250 | ; The first argument gets mangled as-if it were written int *const |
| 251 | ; The second arg should not form a backref because it isn't qualified |
| 252 | ?mangle_no_backref0@@YAXQAHPAH@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 253 | ; CHECK: void __cdecl mangle_no_backref0(int *const, int *) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 254 | ?mangle_no_backref0@@YAXQEAHPEAH@Z |
| 255 | ; CHECK: void __cdecl mangle_no_backref0(int *const, int *) |
| 256 | |
| 257 | ?mangle_no_backref1@@YAXQAHQAH@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 258 | ; CHECK: void __cdecl mangle_no_backref1(int *const, int *const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 259 | ?mangle_no_backref1@@YAXQEAHQEAH@Z |
| 260 | ; CHECK: void __cdecl mangle_no_backref1(int *const, int *const) |
| 261 | |
| 262 | ; Pointer to function types don't backref with function types |
| 263 | ?mangle_no_backref2@@YAXP6AXXZP6AXXZ@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 264 | ; CHECK: void __cdecl mangle_no_backref2(void (__cdecl *)(void), void (__cdecl *)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 265 | ?mangle_no_backref2@@YAXP6AXXZP6AXXZ@Z |
Zachary Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 266 | ; CHECK: void __cdecl mangle_no_backref2(void (__cdecl *)(void), void (__cdecl *)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 267 | |
| 268 | ?mangle_yes_backref0@@YAXQAH0@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 269 | ; CHECK: void __cdecl mangle_yes_backref0(int *const, int *const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 270 | ?mangle_yes_backref0@@YAXQEAH0@Z |
| 271 | ; CHECK: void __cdecl mangle_yes_backref0(int *const, int *const) |
| 272 | |
| 273 | ?mangle_yes_backref1@@YAXQAH0@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 274 | ; CHECK: void __cdecl mangle_yes_backref1(int *const, int *const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 275 | ?mangle_yes_backref1@@YAXQEAH0@Z |
| 276 | ; CHECK: void __cdecl mangle_yes_backref1(int *const, int *const) |
| 277 | |
| 278 | ?mangle_yes_backref2@@YAXQBQ6AXXZ0@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 279 | ; CHECK: void __cdecl mangle_yes_backref2(void (__cdecl *const *const)(void), void (__cdecl *const *const)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 280 | ?mangle_yes_backref2@@YAXQEBQ6AXXZ0@Z |
Zachary Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 281 | ; CHECK: void __cdecl mangle_yes_backref2(void (__cdecl *const *const)(void), void (__cdecl *const *const)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 282 | |
| 283 | ?mangle_yes_backref3@@YAXQAP6AXXZ0@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 284 | ; CHECK: void __cdecl mangle_yes_backref3(void (__cdecl **const)(void), void (__cdecl **const)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 285 | ?mangle_yes_backref3@@YAXQEAP6AXXZ0@Z |
Zachary Turner | c2403ba | 2018-07-26 20:33:48 +0000 | [diff] [blame] | 286 | ; CHECK: void __cdecl mangle_yes_backref3(void (__cdecl **const)(void), void (__cdecl **const)(void)) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 287 | |
| 288 | ?mangle_yes_backref4@@YAXQIAH0@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 289 | ; CHECK: void __cdecl mangle_yes_backref4(int *const __restrict, int *const __restrict) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 290 | ?mangle_yes_backref4@@YAXQEIAH0@Z |
| 291 | ; CHECK: void __cdecl mangle_yes_backref4(int *const __restrict, int *const __restrict) |
| 292 | |
| 293 | ?pr23325@@YAXQBUS@@0@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 294 | ; CHECK: void __cdecl pr23325(struct S const *const, struct S const *const) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 295 | ?pr23325@@YAXQEBUS@@0@Z |
| 296 | ; CHECK: void __cdecl pr23325(struct S const *const, struct S const *const) |
| 297 | |
| 298 | ; ?vla_arg@@YAXHQAY0A@H@Z |
Zachary Turner | f1aa92e | 2018-08-02 22:37:40 +0000 | [diff] [blame] | 299 | ; FIXME: void __cdecl vla_arg(int i, int (*const)[0]) |
Zachary Turner | eedd47c | 2018-07-26 20:25:35 +0000 | [diff] [blame] | 300 | ; ?vla_arg@@YAXHQEAY0A@H@Z |
| 301 | ; FIXME: void __cdecl vla_arg(int i, int (*const)[0]) |