Commit d26f589
committed
c++: sizeof... mangling with alias template [PR95298]
We were getting sizeof... mangling wrong when the argument after
substitution was a pack expansion that is not a simple T..., such as
list<T>... in variadic-mangle4.C or (A+1)... in variadic-mangle5.C. In the
former case we ICEd; in the latter case we wrongly mangled it as sZ
<expression>.
PR c++/95298
gcc/cp/ChangeLog:
* mangle.cc (write_expression): Handle v18 sizeof... bug.
* pt.cc (tsubst_pack_expansion): Keep TREE_VEC for sizeof...
(tsubst_expr): Don't strip TREE_VEC here.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/variadic-mangle2.C: Add non-member.
* g++.dg/cpp0x/variadic-mangle4.C: New test.
* g++.dg/cpp0x/variadic-mangle5.C: New test.
* g++.dg/cpp0x/variadic-mangle5a.C: New test.1 parent 2fa122c commit d26f589
File tree
6 files changed
+86
-3
lines changed- gcc
- cp
- testsuite/g++.dg/cpp0x
6 files changed
+86
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3444 | 3444 | | |
3445 | 3445 | | |
3446 | 3446 | | |
| 3447 | + | |
3447 | 3448 | | |
3448 | 3449 | | |
3449 | 3450 | | |
| |||
3464 | 3465 | | |
3465 | 3466 | | |
3466 | 3467 | | |
| 3468 | + | |
| 3469 | + | |
| 3470 | + | |
| 3471 | + | |
| 3472 | + | |
| 3473 | + | |
| 3474 | + | |
| 3475 | + | |
| 3476 | + | |
| 3477 | + | |
| 3478 | + | |
| 3479 | + | |
| 3480 | + | |
3467 | 3481 | | |
3468 | 3482 | | |
3469 | 3483 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13572 | 13572 | | |
13573 | 13573 | | |
13574 | 13574 | | |
13575 | | - | |
| 13575 | + | |
| 13576 | + | |
| 13577 | + | |
| 13578 | + | |
| 13579 | + | |
| 13580 | + | |
| 13581 | + | |
| 13582 | + | |
| 13583 | + | |
13576 | 13584 | | |
13577 | 13585 | | |
13578 | 13586 | | |
| |||
20261 | 20269 | | |
20262 | 20270 | | |
20263 | 20271 | | |
20264 | | - | |
20265 | | - | |
20266 | 20272 | | |
20267 | 20273 | | |
20268 | 20274 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
11 | 16 | | |
12 | 17 | | |
13 | 18 | | |
14 | 19 | | |
15 | 20 | | |
16 | 21 | | |
17 | 22 | | |
| 23 | + | |
| 24 | + | |
18 | 25 | | |
| 26 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
0 commit comments