From 64e40c56fb5dd12930f287272a8bcc87c7880f53 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Thu, 10 Apr 2014 00:49:24 +0000 Subject: AST: Implement proposal for dependent elaborated type specifiers cxx-abi-dev came up with a way to disambiguate between different keywords used in elaborated type specifiers. This resolves certain collisions during mangling. llvm-svn: 205943 --- clang/test/CodeGenCXX/mangle.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'clang/test/CodeGenCXX/mangle.cpp') diff --git a/clang/test/CodeGenCXX/mangle.cpp b/clang/test/CodeGenCXX/mangle.cpp index ffb66361fcb..24207dbce64 100644 --- a/clang/test/CodeGenCXX/mangle.cpp +++ b/clang/test/CodeGenCXX/mangle.cpp @@ -951,3 +951,43 @@ namespace test44 { } // CHECK-LABEL: define linkonce_odr void @_ZN6test443foo3barEv(%"struct.test44::foo"* %this) } + +namespace test45 { + struct S { + enum e {}; + }; + template + void f(enum T::e *) {} + template void f(S::e *); + // CHECK-LABEL: define weak_odr void @_ZN6test451fINS_1SEEEvPNTeT_1eE(i32*) +} + +namespace test46 { + struct S { + struct s {}; + }; + template + void f(struct T::s *) {} + template void f(S::s *); + // CHECK-LABEL: define weak_odr void @_ZN6test461fINS_1SEEEvPNTsT_1sE(%"struct.test46::S::s"*) +} + +namespace test47 { + struct S { + class c {}; + }; + template + void f(class T::c *) {} + template void f(S::c *); + // CHECK-LABEL: define weak_odr void @_ZN6test471fINS_1SEEEvPNTsT_1cE(%"class.test47::S::c"*) +} + +namespace test48 { + struct S { + union u {}; + }; + template + void f(union T::u *) {} + template void f(S::u *); + // CHECK-LABEL: define weak_odr void @_ZN6test481fINS_1SEEEvPNTuT_1uE(%"union.test48::S::u"*) +} -- cgit v1.2.3