ipa-split.c (execute_split_functions): Split externally visible functions called once.
* ipa-split.c (execute_split_functions): Split externally visible functions called once. * gcc.dg/tree-ssa/fnsplit-1.c: New testcase. From-SVN: r202185
This commit is contained in:
parent
2fd0985c70
commit
c91061e6b0
4 changed files with 35 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
2013-09-02 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* ipa-split.c (execute_split_functions): Split externally visible
|
||||
functions called once.
|
||||
|
||||
2013-09-02 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR ipa/58106
|
||||
|
|
|
@ -1537,7 +1537,9 @@ execute_split_functions (void)
|
|||
Note that we are not completely conservative about disqualifying functions
|
||||
called once. It is possible that the caller is called more then once and
|
||||
then inlining would still benefit. */
|
||||
if ((!node->callers || !node->callers->next_caller)
|
||||
if ((!node->callers
|
||||
/* Local functions called once will be completely inlined most of time. */
|
||||
|| (!node->callers->next_caller && node->local.local))
|
||||
&& !node->symbol.address_taken
|
||||
&& (!flag_lto || !node->symbol.externally_visible))
|
||||
{
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2013-09-02 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* gcc.dg/tree-ssa/fnsplit-1.c: New testcase.
|
||||
|
||||
2013-09-02 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR ipa/58106
|
||||
|
|
23
gcc/testsuite/gcc.dg/tree-ssa/fnsplit-1.c
Normal file
23
gcc/testsuite/gcc.dg/tree-ssa/fnsplit-1.c
Normal file
|
@ -0,0 +1,23 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fdump-tree-fnsplit" } */
|
||||
#include <stdio.h>
|
||||
int a[1000];
|
||||
|
||||
void
|
||||
t(int a)
|
||||
{
|
||||
if (a)
|
||||
printf ("I Am Completely Operational,"),
|
||||
printf ("And All My Circuits Are Functioning Perfectly\n");
|
||||
}
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 1000; i++)
|
||||
t(a[i]);
|
||||
return 0;
|
||||
}
|
||||
/* { dg-final { scan-tree-dump-times "Splitting function at:" 1 "fnsplit"} } */
|
||||
|
||||
/* { dg-final { cleanup-tree-dump "fnsplit" } } */
|
Loading…
Add table
Reference in a new issue