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> 23 int Foo<T>::bar() { 24 return 23; 25 } 26 int main (int argc, const char * argv[]) 27 { 28 Foo<int> f; 29 return f.bar(); 30 } 31