https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68002
Bug ID: 68002
Summary: retaining unused static functions at -O1
Product: gcc
Version: 5.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: Joost.VandeVondele at mat dot ethz.ch
Target Milestone: ---
There are uses for retaining unused static functions even if optimising, e.g.
coverage testing. Right now these function are removed at -O1 and there is no
flag to keep them.
In https://gcc.gnu.org/ml/gcc-help/2015-10/msg00110.html Marc Glisse suggested
to introduce a flag similar to -fkeep-inline-functions.
c testcase:
> cat test.c
static void foo() { }
> gcc -c -O0 test.c ; nm test.o
0000000000000000 t foo
> gcc -c -O1 test.c ; nm test.o
Fortran testcase:
> cat test.f90
MODULE foo
PRIVATE
CONTAINS
SUBROUTINE bar()
END SUBROUTINE bar
END MODULE
I'll try to come up with a patch based on Marc's suggestion