xref: /aosp_15_r20/external/clang/test/CodeGenCXX/lpad-linetable.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1  -fcxx-exceptions -fexceptions -emit-llvm -debug-info-kind=limited -triple x86_64-apple-darwin10 %s -o - | FileCheck %s
2*67e74705SXin Li // The landing pad should have the line number of the closing brace of the function.
3*67e74705SXin Li // rdar://problem/13888152
4*67e74705SXin Li // CHECK: ret i32
5*67e74705SXin Li // CHECK: landingpad {{.*}}
6*67e74705SXin Li // CHECK-NEXT: !dbg ![[LPAD:[0-9]+]]
7*67e74705SXin Li // CHECK: ![[LPAD]] = !DILocation(line: 24, scope: !{{.*}})
8*67e74705SXin Li 
9*67e74705SXin Li # 1 "/usr/include/c++/4.2.1/vector" 1 3
10*67e74705SXin Li typedef long unsigned int __darwin_size_t;
11*67e74705SXin Li typedef __darwin_size_t size_t;
12*67e74705SXin Li namespace std {
13*67e74705SXin Li   template<typename _Tp>
14*67e74705SXin Li   class allocator
15*67e74705SXin Li   {
16*67e74705SXin Li   public:
17*67e74705SXin Li     template<typename _Tp1>
18*67e74705SXin Li     struct rebind
19*67e74705SXin Li     { typedef allocator<_Tp1> other; };
~allocator()20*67e74705SXin Li     ~allocator() throw() { }
21*67e74705SXin Li   };
22*67e74705SXin Li   template<typename _Tp, typename _Alloc>
23*67e74705SXin Li   struct _Vector_base
24*67e74705SXin Li   {
25*67e74705SXin Li     typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
26*67e74705SXin Li     struct _Vector_impl
27*67e74705SXin Li     {
_Vector_implstd::_Vector_base::_Vector_impl28*67e74705SXin Li       _Vector_impl(_Tp_alloc_type const& __a)      { }
29*67e74705SXin Li     };
30*67e74705SXin Li     typedef _Alloc allocator_type;
_Vector_basestd::_Vector_base31*67e74705SXin Li     _Vector_base(const allocator_type& __a)
32*67e74705SXin Li     : _M_impl(__a)
33*67e74705SXin Li     {  }
~_Vector_basestd::_Vector_base34*67e74705SXin Li     ~_Vector_base()  {  }
35*67e74705SXin Li     _Vector_impl _M_impl;
36*67e74705SXin Li   };
37*67e74705SXin Li   template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
38*67e74705SXin Li   class vector
39*67e74705SXin Li     : protected _Vector_base<_Tp, _Alloc>
40*67e74705SXin Li   {
41*67e74705SXin Li     typedef _Vector_base<_Tp, _Alloc> _Base;
42*67e74705SXin Li   public:
43*67e74705SXin Li     typedef _Tp value_type;
44*67e74705SXin Li     typedef size_t size_type;
45*67e74705SXin Li     typedef _Alloc allocator_type;
vector(const allocator_type & __a=allocator_type ())46*67e74705SXin Li     vector(const allocator_type& __a = allocator_type())
47*67e74705SXin Li       : _Base(__a)
48*67e74705SXin Li     {      }
49*67e74705SXin Li     size_type
push_back(const value_type & __x)50*67e74705SXin Li     push_back(const value_type& __x)
51*67e74705SXin Li     {}
52*67e74705SXin Li   };
53*67e74705SXin Li }
54*67e74705SXin Li # 10 "main.cpp" 2
55*67e74705SXin Li 
56*67e74705SXin Li 
57*67e74705SXin Li 
58*67e74705SXin Li 
main(int argc,char const * argv[],char const * envp[])59*67e74705SXin Li int main (int argc, char const *argv[], char const *envp[])
60*67e74705SXin Li { // 15
61*67e74705SXin Li   std::vector<long> longs;
62*67e74705SXin Li   std::vector<short> shorts;
63*67e74705SXin Li   for (int i=0; i<12; i++)
64*67e74705SXin Li     {
65*67e74705SXin Li       longs.push_back(i);
66*67e74705SXin Li       shorts.push_back(i);
67*67e74705SXin Li     }
68*67e74705SXin Li   return 0; // 23
69*67e74705SXin Li } // 24
70