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