1 // RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited %s -o - | FileCheck %s
2 // Test that the line table info for Foo<T>::bar() is pointing to the
3 // right header file.
4 // CHECK: define{{.*}}bar
5 // CHECK-NOT: define
6 // CHECK: ret {{.*}}, !dbg [[DBG:.*]]
7 // CHECK: [[HPP:.*]] = !DIFile(filename: "./template.hpp",
8 // CHECK: [[SP:.*]] = distinct !DISubprogram(name: "bar",
9 // CHECK-SAME:                               file: [[HPP]], line: 22
10 // CHECK-SAME:                               isDefinition: true
11 // We shouldn't need a lexical block for this function.
12 // CHECK: [[DBG]] = !DILocation(line: 23, scope: [[SP]])
13 
14 
15 # 1 "./template.h" 1
16 template <typename T>
17 class Foo {
18 public:
19   int bar();
20 };
21 # 21 "./template.hpp"
22 template <typename T>
bar()23 int Foo<T>::bar() {
24   return 23;
25 }
main(int argc,const char * argv[])26 int main (int argc, const char * argv[])
27 {
28   Foo<int> f;
29   return f.bar();
30 }
31