Files
clang-p2996/clang/test/CodeGenCXX/lpad-linetable.cpp
Adrian Prantl 5e5ff6e170 Set the debug location for landing pad code to the canonical EH location.
It used to point to the first call that caused the landing pad to
be generated.

rdar://problem/13888152

llvm-svn: 181958
2013-05-16 00:41:29 +00:00

70 lines
1.7 KiB
C++

// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -emit-llvm -g -triple x86_64-apple-darwin10 %s -o - | FileCheck %s
// The landing pad should have the line number of the closing brace of the function.
// rdar://problem/13888152
// CHECK: ret i32
// CHECK: landingpad {{.*}}
// CHECK-NEXT: !dbg ![[LPAD:[0-9]+]]
// CHECK: ![[LPAD]] = metadata !{i32 24, i32 0, metadata !{{.*}}, null}
# 1 "/usr/include/c++/4.2.1/vector" 1 3
typedef long unsigned int __darwin_size_t;
typedef __darwin_size_t size_t;
namespace std {
template<typename _Tp>
class allocator
{
public:
template<typename _Tp1>
struct rebind
{ typedef allocator<_Tp1> other; };
~allocator() throw() { }
};
template<typename _Tp, typename _Alloc>
struct _Vector_base
{
typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
struct _Vector_impl
{
_Vector_impl(_Tp_alloc_type const& __a) { }
};
typedef _Alloc allocator_type;
_Vector_base(const allocator_type& __a)
: _M_impl(__a)
{ }
~_Vector_base() { }
_Vector_impl _M_impl;
};
template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
class vector
: protected _Vector_base<_Tp, _Alloc>
{
typedef _Vector_base<_Tp, _Alloc> _Base;
public:
typedef _Tp value_type;
typedef size_t size_type;
typedef _Alloc allocator_type;
vector(const allocator_type& __a = allocator_type())
: _Base(__a)
{ }
size_type
push_back(const value_type& __x)
{}
};
}
# 10 "main.cpp" 2
int main (int argc, char const *argv[], char const *envp[])
{ // 15
std::vector<long> longs;
std::vector<short> shorts;
for (int i=0; i<12; i++)
{
longs.push_back(i);
shorts.push_back(i);
}
return 0; // 23
} // 24