summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/mangle-lambdas.cpp
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2012-12-02 13:20:44 +0000
committerdim <dim@FreeBSD.org>2012-12-02 13:20:44 +0000
commit056abd2059c65a3e908193aeae16fad98017437c (patch)
tree2732d02d7d51218d6eed98ac7fcfc5b8794896b5 /test/CodeGenCXX/mangle-lambdas.cpp
parentcc73504950eb7b5dff2dded9bedd67bc36d64641 (diff)
downloadFreeBSD-src-056abd2059c65a3e908193aeae16fad98017437c.zip
FreeBSD-src-056abd2059c65a3e908193aeae16fad98017437c.tar.gz
Vendor import of clang release_32 branch r168974 (effectively, 3.2 RC2):
http://llvm.org/svn/llvm-project/cfe/branches/release_32@168974
Diffstat (limited to 'test/CodeGenCXX/mangle-lambdas.cpp')
-rw-r--r--test/CodeGenCXX/mangle-lambdas.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/CodeGenCXX/mangle-lambdas.cpp b/test/CodeGenCXX/mangle-lambdas.cpp
index 16ddf48..0bd5ad2 100644
--- a/test/CodeGenCXX/mangle-lambdas.cpp
+++ b/test/CodeGenCXX/mangle-lambdas.cpp
@@ -172,6 +172,33 @@ template<typename...T> int PR12917<T...>::n[3] = {
PR12917<int, char, double> pr12917;
int *pr12917_p = PR12917<int, int>::n;
+namespace std {
+ struct type_info;
+}
+namespace PR12123 {
+ struct A { virtual ~A(); } g;
+ struct B {
+ void f(const std::type_info& x = typeid([]()->A& { return g; }()));
+ void h();
+ };
+ void B::h() { f(); }
+}
+// CHECK: define linkonce_odr %"struct.PR12123::A"* @_ZZN7PR121231B1fERKSt9type_infoEd_NKUlvE_clEv
+
+namespace PR12808 {
+ template <typename> struct B {
+ int a;
+ template <typename L> constexpr B(L&& x) : a(x()) { }
+ };
+ template <typename> void b(int) {
+ [&]{ (void)B<int>([&]{ return 1; }); }();
+ }
+ void f() {
+ b<int>(1);
+ }
+ // CHECK: define linkonce_odr void @_ZZN7PR128081bIiEEviENKS0_IiEUlvE_clEv
+ // CHECK: define linkonce_odr i32 @_ZZZN7PR128081bIiEEviENKS0_IiEUlvE_clEvENKUlvE_clEv
+}
// CHECK: define linkonce_odr void @_Z1fIZZNK23TestNestedInstantiationclEvENKUlvE_clEvEUlvE_EvT_
OpenPOWER on IntegriCloud