https://bugs.llvm.org/show_bug.cgi?id=42110

            Bug ID: 42110
           Summary: llvm-cov: unused methods of template classes are not
                    shown as uncovered
           Product: new-bugs
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: new bugs
          Assignee: unassignedb...@nondot.org
          Reporter: dennis.fels...@sap.com
                CC: htmldevelo...@gmail.com, llvm-bugs@lists.llvm.org

$ cat x.cpp
template<typename T>
struct C
{
    C(T x)
    : v(x)
    {
    }

    void foo(T x)
    {
        v = x;
    }

    T v;
};

int main()
{
    C<int> c(5);
}

$ clang++ -fprofile-instr-generate -fcoverage-mapping x.cpp -o x
$ ./x
$ llvm-profdata merge -sparse default.profraw -o default.profdata 
$ llvm-cov show ./x -instr-profile=default.profdata
    1|       |template<typename T>
    2|       |struct C
    3|       |{
    4|       |    C(T x)
    5|       |    : v(x)
    6|      1|    {
    7|      1|    }
    8|       |
    9|       |    void foo(T x)
   10|       |    {
   11|       |        v = x;
   12|       |    }
   13|       |
   14|       |    T v;
   15|       |};
   16|       |
   17|       |int main()
   18|      1|{
   19|      1|    C<int> c(5);
   20|      1|}

I would expect foo to be considered uncovered, but since the method is inside
of a template class it is apparently not generated when it's also not used. If
the class is non-templated foo is shown correctly as being uncovered.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to