• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 template <class T> class FOO {
2 public:
FOO()3   FOO() : t(0) {}
4 
5   T DoIt(T ti);
6 
7 private:
8   T t;
9 };
10 
DoIt(T ti)11 template <class T> T FOO<T>::DoIt(T ti) { // HEADER: [[@LINE]]|  2|template
12   for (T I = 0; I < ti; I++) {            // HEADER: [[@LINE]]| 22|  for (T
13     t += I;                               // HEADER: [[@LINE]]| 20|   t += I;
14     if (I > ti / 2)                       // HEADER: [[@LINE]]| 20|   if (I > ti
15       t -= 1;                             // HEADER: [[@LINE]]| 20|     t -= 1;
16   }                                       // HEADER: [[@LINE]]| 20| }
17                                           // HEADER: [[@LINE]]|  2|
18   return t;                               // HEADER: [[@LINE]]|  2|  return t;
19 }
20 
21 // To generate the binaries which correspond to this file, you must first
22 // compile a program with two calls to Foo<int>::DoIt(10) for each desired
23 // architecture. Collect a raw profile from any one of these binaries, index
24 // it, and check it in along with the executables.
25 
26 // Note:
27 // The line execution count on line 14 is incorrect because of a bug in the
28 // checked-in coverage mappings, which has subsequently been fixed in clang.
29