mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
b7710f8516
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. llvm-svn: 340710
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) |