1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -emit-llvm -g %s -o - | FileCheck %s
2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// Test that the line table info for Foo<T>::bar() is pointing to the
3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// right header file.
4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: define{{.*}}bar
5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-NOT: define
6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: ret {{.*}}, !dbg [[DBG:.*]]
7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: [[HPP:.*]] = metadata !{metadata !"./template.hpp",
8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: [[SP:.*]] = metadata !{i32 786478, metadata [[HPP]],{{.*}}[ DW_TAG_subprogram ] [line 22] [def] [bar]
9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// We shouldn't need a lexical block for this function.
10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: [[DBG]] = metadata !{i32 23, i32 0, metadata [[SP]], null}
11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines# 1 "./template.h" 1
14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinestemplate <typename T>
15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclass Foo {
16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinespublic:
17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  int bar();
18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines};
19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines# 21 "./template.hpp"
20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinestemplate <typename T>
21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint Foo<T>::bar() {
22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return 23;
23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint main (int argc, const char * argv[])
25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines{
26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  Foo<int> f;
27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return f.bar();
28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
29