[PATCH] Fix PR48731
Richard Guenther
rguenther@suse.de
Tue Apr 26 13:05:00 GMT 2011
This adds a missing check for ->local.inlinable to cgraph_flatten.
Honza fixed this on trunk by factoring out the checks.
Bootstrapped and tested on x86_64-unknown-linux-gnu, installed.
Richard.
2011-04-26 Richard Guenther <rguenther@suse.de>
PR tree-optimization/48731
* ipa-inline.c (cgraph_flatten): Test if function is inlinable.
* gcc.dg/torture/pr48731.c: New testcase.
Index: gcc/ipa-inline.c
===================================================================
*** gcc/ipa-inline.c (revision 172962)
--- gcc/ipa-inline.c (working copy)
*************** cgraph_flatten (struct cgraph_node *node
*** 1337,1342 ****
--- 1337,1345 ----
continue;
}
+ if (!e->callee->local.inlinable)
+ continue;
+
/* We've hit cycle? It is time to give up. */
if (e->callee->aux)
{
Index: gcc/testsuite/gcc.dg/torture/pr48731.c
===================================================================
*** gcc/testsuite/gcc.dg/torture/pr48731.c (revision 0)
--- gcc/testsuite/gcc.dg/torture/pr48731.c (revision 0)
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+
+ #include <stdarg.h>
+
+ int blah(int a, ...)
+ {
+ va_list va;
+ va_start(va,a);
+ if (a == 0)
+ return -1;
+ else
+ {
+ int i;
+ for (i = 0; i < a; i++)
+ va_arg(va,int);
+ return va_arg(va,int);
+ }
+ }
+
+ __attribute((flatten))
+ int blah2(int b, int c)
+ {
+ return blah(2, b, c);
+ }
More information about the Gcc-patches
mailing list