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