mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-01 21:04:04 -04:00
6e3e8a765e
This is a pretty large refactor / re-write of the Microsoft demangler. The previous one was a little hackish because it evolved as I was learning about all the various edge cases, exceptions, etc. It didn't have a proper AST and so there was lots of custom handling of things that should have been much more clean. Taking what was learned from that experience, it's now re-written with a completely redesigned and much more sensible AST. It's probably still not perfect, but at least it's comprehensible now to someone else who wants to come along and make some modifications or read the code. Incidentally, this fixed a couple of bugs, so I've enabled the tests which now pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340710 91177308-0d34-0410-b5e6-96231b3b80d8
31 lines
820 B
Plaintext
31 lines
820 B
Plaintext
; RUN: llvm-undname < %s | FileCheck %s
|
|
|
|
; CHECK-NOT: Invalid mangled name
|
|
|
|
|
|
?m@@3U?$J@UM@@$0A@@@A
|
|
; CHECK: struct J<struct M, 0> m
|
|
|
|
?m2@@3U?$K@UM@@$0?0@@A
|
|
; CHECK: struct K<struct M, -1> m2
|
|
|
|
?n@@3U?$J@UN@@$HA@@@A
|
|
; CHECK: struct J<struct N, {0}> n
|
|
|
|
?n2@@3U?$K@UN@@$0?0@@A
|
|
; CHECK: struct K<struct N, -1> n2
|
|
|
|
?o@@3U?$J@UO@@$IA@A@@@A
|
|
; CHECK: struct J<struct O, {0, 0}> o
|
|
|
|
?o2@@3U?$K@UO@@$FA@?0@@A
|
|
; CHECK: struct K<struct O, {0, -1}> o2
|
|
|
|
?p@@3U?$J@UP@@$JA@A@?0@@A
|
|
; CHECK: struct J<struct P, {0, 0, -1}> p
|
|
|
|
?p2@@3U?$K@UP@@$GA@A@?0@@A
|
|
; CHECK: struct K<struct P, {0, 0, -1}> p2
|
|
|
|
??0?$ClassTemplate@$J??_9MostGeneral@@$BA@AEA@M@3@@QAE@XZ
|
|
; CHECK: __thiscall ClassTemplate<{[thunk]: __thiscall MostGeneral::`vcall'{0, {flat}}, 0, 12, 4}>::ClassTemplate<{[thunk]: __thiscall MostGeneral::`vcall'{0, {flat}}, 0, 12, 4}>(void) |