Commit 787da5fd by Joost VandeVondele

Fix PR68002, add -fkeep-static-functions

gcc/ChangeLog:

2015-10-17  Joost VandeVondele  <vondele@gnu.gcc.org>

        PR middle-end/68002
        * common.opt (fkeep-static-functions): New option.
        * doc/invoke.texi: Document it.
        * cgraphunit.c (cgraph_node::finalize_function): Use it.

gcc/testsuite/ChangeLog:

2015-10-17  Joost VandeVondele  <vondele@gnu.gcc.org>

        PR middle-end/68002
        * gcc.dg/PR68002.c: New test.

From-SVN: r228965
parent 9c99fe75
2015-10-19 Joost VandeVondele <vondele@gnu.gcc.org>
PR middle-end/68002
* common.opt (fkeep-static-functions): New option.
* doc/invoke.texi: Document it.
* cgraphunit.c (cgraph_node::finalize_function): Use it.
2015-10-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* sched-int.h (struct autopref_multipass_data_): Remove offset
......@@ -451,7 +451,7 @@ cgraph_node::finalize_function (tree decl, bool no_collect)
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)
......
......@@ -1589,6 +1589,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
......
......@@ -410,8 +410,8 @@ Objective-C and Objective-C++ Dialects}.
-fira-loop-pressure -fno-ira-share-save-slots @gol
-fno-ira-share-spill-slots -fira-verbose=@var{n} @gol
-fisolate-erroneous-paths-dereference -fisolate-erroneous-paths-attribute @gol
-fivopts -fkeep-inline-functions -fkeep-static-consts @gol
-flive-range-shrinkage @gol
-fivopts -fkeep-inline-functions -fkeep-static-functions @gol
-fkeep-static-consts -flive-range-shrinkage @gol
-floop-block -floop-interchange -floop-strip-mine @gol
-floop-unroll-and-jam -floop-nest-optimize @gol
-floop-parallelize-all -flra-remat -flto -flto-compression-level @gol
......@@ -8013,6 +8013,11 @@ of its callers. This switch does not affect functions using the
@code{extern inline} extension in GNU C90@. In C++, emit any and all
inline functions into the object file.
@item -fkeep-static-functions
@optindex fkeep-static-functions
Emit @code{static} functions into the object file, even if the function
is never used.
@item -fkeep-static-consts
@opindex fkeep-static-consts
Emit variables declared @code{static const} when optimization isn't turned
......
2015-10-17 Joost VandeVondele <vondele@gnu.gcc.org>
PR middle-end/68002
* gcc.dg/PR68002.c: New test.
2015-10-19 Richard Sandiford <richard.sandiford@arm.com>
* gcc.dg/builtins-20.c: Remove undefined behavior.
......
/* Ensure static functions can be kept. */
/* { dg-do compile } */
/* { dg-options "-O1 -fkeep-static-functions" } */
static void bar () { }
/* { dg-final { scan-assembler "bar" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment