This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug gcov-profile/78792] New: gfortran + gcov confused by #line directive
- From: "patrick.seewald at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 13 Dec 2016 11:40:44 +0000
- Subject: [Bug gcov-profile/78792] New: gfortran + gcov confused by #line directive
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78792
Bug ID: 78792
Summary: gfortran + gcov confused by #line directive
Product: gcc
Version: 6.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: gcov-profile
Assignee: unassigned at gcc dot gnu.org
Reporter: patrick.seewald at gmail dot com
Target Milestone: ---
$ cat example.in
PROGRAM example
PRINT *, "example"
END PROGRAM
$ cat example.f90
#line 1 "example.in"
PROGRAM example
PRINT *, "example"
END PROGRAM
$ gfortran -fprofile-arcs -ftest-coverage -cpp example.f90 -o example.out
$ ./example.out
$ gcov example.in
File 'example.f90'
Lines executed:100.00% of 3
Creating 'example.f90.gcov'
$ cat example.f90.gcov
-: 0:Source:example.f90
-: 0:Graph:example.gcno
-: 0:Data:example.gcda
-: 0:Runs:1
-: 0:Programs:1
1: 1:#line 1 "example.in"
1: 2:PROGRAM example
2: 3:PRINT *, "example"
-: 4:END PROGRAM
The output example.f90.gcov refers to example.f90 instead of example.in. Note
that the line statistics are shifted by one line, I guess they really refer to
the line numbers of example.in.
For some reason, the coverage report is correct if an #include statement is
present:
$ touch inc
$ cat example2.in
#include "inc"
PROGRAM example2
PRINT *, "example2"
END PROGRAM
$ cat example2.f90
#line 1 "example2.in"
#include "inc"
PROGRAM example2
PRINT *, "example2"
END PROGRAM
$ gfortran -fprofile-arcs -ftest-coverage -cpp example2.f90 -o example2.out
$ ./example2.out
$ gcov example2.in
File 'example2.in'
Lines executed:100.00% of 3
Creating 'example2.in.gcov'
$ cat example2.in.gcov
-: 0:Source:example2.in
-: 0:Graph:example2.gcno
-: 0:Data:example2.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:#include "inc"
1: 2:PROGRAM example2
1: 3:PRINT *, "example2"
2: 4:END PROGRAM