summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/lpad-linetable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGenCXX/lpad-linetable.cpp')
-rw-r--r--test/CodeGenCXX/lpad-linetable.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/test/CodeGenCXX/lpad-linetable.cpp b/test/CodeGenCXX/lpad-linetable.cpp
new file mode 100644
index 0000000..dba2ad6
--- /dev/null
+++ b/test/CodeGenCXX/lpad-linetable.cpp
@@ -0,0 +1,69 @@
+// 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
OpenPOWER on IntegriCloud