[MS Demangler] Print public:, protected:, private: if set in FunctionClass or a variable's StorageClass.
undname prints them, and the information is in the decorated name, so we probably shouldn't lose it when undecorating.
I spot-checked a few of the funnier-looking outputs, and undname has the same output.
Differential Revision: https://reviews.llvm.org/D54396
llvm-svn: 346791
diff --git a/llvm/test/Demangle/ms-nested-scopes.test b/llvm/test/Demangle/ms-nested-scopes.test
index 952b138..450ab66 100644
--- a/llvm/test/Demangle/ms-nested-scopes.test
+++ b/llvm/test/Demangle/ms-nested-scopes.test
@@ -81,10 +81,10 @@
; CHECK: int `int __cdecl M(void)'::`2'::M
?L@?2??M@0?2??0@YAHXZ@QEAAHXZ@4HA
-; CHECK: int `int __cdecl `int __cdecl L(void)'::`3'::L::M(void)'::`3'::L
+; CHECK: int `public: int __cdecl `int __cdecl L(void)'::`3'::L::M(void)'::`3'::L
?M@?2??0L@?2??1@YAHXZ@QEAAHXZ@4HA
-; CHECK: int `int __cdecl `int __cdecl L(void)'::`3'::L::M(void)'::`3'::M
+; CHECK: int `public: int __cdecl `int __cdecl L(void)'::`3'::L::M(void)'::`3'::M
; Function local scopes of template functions
?M@?1???$L@H@@YAHXZ@4HA
@@ -95,16 +95,16 @@
; CHECK: int __cdecl NS::NS<int>::SN(void)
?NS@?1??SN@?$NS@H@0@QEAAHXZ@4HA
-; CHECK: int `int __cdecl NS::NS<int>::SN(void)'::`2'::NS
+; CHECK: int `public: int __cdecl NS::NS<int>::SN(void)'::`2'::NS
?SN@?1??0?$NS@H@NS@@QEAAHXZ@4HA
-; CHECK: int `int __cdecl NS::NS<int>::SN(void)'::`2'::SN
+; CHECK: int `public: int __cdecl NS::NS<int>::SN(void)'::`2'::SN
?NS@?1??SN@?$NS@H@10@QEAAHXZ@4HA
-; CHECK: int `int __cdecl NS::SN::NS<int>::SN(void)'::`2'::NS
+; CHECK: int `public: int __cdecl NS::SN::NS<int>::SN(void)'::`2'::NS
?SN@?1??0?$NS@H@0NS@@QEAAHXZ@4HA
-; CHECK: int `int __cdecl NS::SN::NS<int>::SN(void)'::`2'::SN
+; CHECK: int `public: int __cdecl NS::SN::NS<int>::SN(void)'::`2'::SN
; Make sure instantiated templates participate in back-referencing.
; In the next 3 examples there should be 3 back-references:
@@ -137,10 +137,10 @@
; } } } } }
?C@?1??B@?$C@H@0101A@@QEAAHXZ@4U201013@A
-; CHECK: struct A::B::C::B::C::C<int> `int __cdecl A::B::C::B::C::C<int>::B(void)'::`2'::C
+; CHECK: struct A::B::C::B::C::C<int> `public: int __cdecl A::B::C::B::C::C<int>::B(void)'::`2'::C
?B@?1??0?$C@H@C@020A@@QEAAHXZ@4HA
-; CHECK: int `int __cdecl A::B::C::B::C::C<int>::B(void)'::`2'::B
+; CHECK: int `public: int __cdecl A::B::C::B::C::C<int>::B(void)'::`2'::B
?A@?1??B@?$C@H@C@1310@QEAAHXZ@4HA
-; CHECK: int `int __cdecl A::B::C::B::C::C<int>::B(void)'::`2'::A
+; CHECK: int `public: int __cdecl A::B::C::B::C::C<int>::B(void)'::`2'::A