This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix inlining of K&R functions


The check for type-mismatched inline functions was recently moved to
gimple-low as part of the fix PR c++/36631.  This should have already fixed
the inlining of K&R function since at the time we look at the call we already
have all the information about the callee.  However, some code was left behind
so for a K&R function (i.e. parameters are unknown) we still make the decision
at gimplification time.  The patch removes this bit.  Note that the same check
is performed later in gimple-low so this should be safe.

I found this with Dhrystone, which is K&R.  This is a regression from GCC 4.1.

Bootstrapped and tested on x86_64-linux.

OK to install?

Adam


	* gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
	for functions for which the parameter types are unknown.

testsuite/
	* gcc.dg/inline-33.c: New test.

Index: gimplify.c
===================================================================
--- gimplify.c	(revision 144705)
+++ gimplify.c	(working copy)
@@ -2355,11 +2355,7 @@ gimplify_call_expr (tree *expr_p, gimple
   else if (parms)
     p = parms;
   else
-    {
-      if (nargs != 0)
-	CALL_CANNOT_INLINE_P (*expr_p) = 1;
-      p = NULL_TREE;
-    }
+    p = NULL_TREE;
   for (i = 0; i < nargs && p; i++, p = TREE_CHAIN (p))
     ;
 
Index: testsuite/gcc.dg/inline-33.c
===================================================================
--- testsuite/gcc.dg/inline-33.c	(revision 0)
+++ testsuite/gcc.dg/inline-33.c	(revision 0)
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fdump-tree-optimized"  } */
+
+int i;
+
+int foo ();
+
+main ()
+{
+  return foo (i);
+}
+
+int foo (i)
+     int i;
+{
+  return bar(i);
+}
+
+/* { dg-final { scan-tree-dump-times "bar"  2 "optimized"  } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]