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