RE: retaining unused static functions at -O1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> I have also missed this functionality in the past. If there isn't a PR about it, it would be good to open one.

Thanks Marc, this is PR68002 now. 

However, based on your suggestion, I actually have now a seemingly working patch, which I will try to clean up for submission:

Index: cgraphunit.c
===================================================================
--- cgraphunit.c	(revision 227094)
+++ cgraphunit.c	(working copy)
@@ -451,7 +451,7 @@ cgraph_node::finalize_function (tree dec
      declared inline and nested functions.  These were optimized out
      in the original implementation and it is unclear whether we want
      to change the behavior here.  */
-  if ((!opt_for_fn (decl, optimize)
+  if (((!opt_for_fn (decl, optimize) || flag_keep_static_functions)
        && !node->cpp_implicit_alias
        && !DECL_DISREGARD_INLINE_LIMITS (decl)
        && !DECL_DECLARED_INLINE_P (decl)
Index: testsuite/gcc.dg/PR68002.c
===================================================================
--- testsuite/gcc.dg/PR68002.c	(revision 0)
+++ testsuite/gcc.dg/PR68002.c	(revision 0)
@@ -0,0 +1,7 @@
+/* Ensure static functions can be kept.  */
+/* { dg-do compile } */
+/* { dg-options "-O1 -fkeep-static-functions" } */
+
+static void bar () { }
+
+/* { dg-final { scan-assembler "bar" } } */
Index: common.opt
===================================================================
--- common.opt	(revision 227094)
+++ common.opt	(working copy)
@@ -1584,6 +1584,10 @@ fkeep-inline-functions
 Common Report Var(flag_keep_inline_functions)
 Generate code for functions even if they are fully inlined
 
+fkeep-static-functions
+Common Report Var(flag_keep_static_functions)
+Generate code for static functions even if they are never called 
+
 fkeep-static-consts
 Common Report Var(flag_keep_static_consts) Init(1)
 Emit static const variables even if they are not used







[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux