159f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -emit-llvm -g -triple x86_64-apple-darwin10 %s -o - | FileCheck %s 259f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl// The landing pad should have the line number of the closing brace of the function. 359f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl// rdar://problem/13888152 459f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl// CHECK: ret i32 559f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl// CHECK: landingpad {{.*}} 659f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl// CHECK-NEXT: !dbg ![[LPAD:[0-9]+]] 759f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl// CHECK: ![[LPAD]] = metadata !{i32 24, i32 0, metadata !{{.*}}, null} 859f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl 959f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl# 1 "/usr/include/c++/4.2.1/vector" 1 3 1059f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantltypedef long unsigned int __darwin_size_t; 1159f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantltypedef __darwin_size_t size_t; 1259f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantlnamespace std { 1359f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl template<typename _Tp> 1459f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl class allocator 1559f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl { 1659f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl public: 1759f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl template<typename _Tp1> 1859f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl struct rebind 1959f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl { typedef allocator<_Tp1> other; }; 2059f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl ~allocator() throw() { } 2159f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl }; 2259f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl template<typename _Tp, typename _Alloc> 2359f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl struct _Vector_base 2459f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl { 2559f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type; 2659f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl struct _Vector_impl 2759f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl { 2859f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl _Vector_impl(_Tp_alloc_type const& __a) { } 2959f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl }; 3059f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl typedef _Alloc allocator_type; 3159f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl _Vector_base(const allocator_type& __a) 3259f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl : _M_impl(__a) 3359f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl { } 3459f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl ~_Vector_base() { } 3559f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl _Vector_impl _M_impl; 3659f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl }; 3759f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl template<typename _Tp, typename _Alloc = std::allocator<_Tp> > 3859f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl class vector 3959f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl : protected _Vector_base<_Tp, _Alloc> 4059f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl { 4159f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl typedef _Vector_base<_Tp, _Alloc> _Base; 4259f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl public: 4359f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl typedef _Tp value_type; 4459f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl typedef size_t size_type; 4559f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl typedef _Alloc allocator_type; 4659f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl vector(const allocator_type& __a = allocator_type()) 4759f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl : _Base(__a) 4859f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl { } 4959f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl size_type 5059f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl push_back(const value_type& __x) 5159f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl {} 5259f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl }; 5359f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl} 5459f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl# 10 "main.cpp" 2 5559f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl 5659f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl 5759f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl 5859f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl 5959f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantlint main (int argc, char const *argv[], char const *envp[]) 6059f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl{ // 15 6159f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl std::vector<long> longs; 6259f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl std::vector<short> shorts; 6359f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl for (int i=0; i<12; i++) 6459f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl { 6559f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl longs.push_back(i); 6659f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl shorts.push_back(i); 6759f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl } 6859f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl return 0; // 23 6959f0a5a5481a6dcfafd092dd944e6cfb7d146d4cAdrian Prantl} // 24 70