changeset 96:506ac5e3963a

modify expand_call
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 17 Jan 2012 06:11:37 +0900
parents 70c969e0d1dd
children 4d6300120c29
files gcc/calls.c gcc/calls.c~
diffstat 2 files changed, 12 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/gcc/calls.c	Tue Jan 17 06:00:44 2012 +0900
+++ b/gcc/calls.c	Tue Jan 17 06:11:37 2012 +0900
@@ -2353,14 +2353,8 @@
 	 function, we cannot change it into a sibling call.
 	 crtl->args.pretend_args_size is not part of the
 	 stack allocated by our caller.  */
-#ifndef noCbC
-      || (args_size.constant > (crtl->args.size
-				- crtl->args.pretend_args_size)
-          && (!fndecl || !CbC_IS_CODE_SEGMENT (TREE_TYPE (fndecl))))
-#else
       || args_size.constant > (crtl->args.size
                                - crtl->args.pretend_args_size)
-#endif
       /* If the callee pops its own arguments, then it must pop exactly
 	 the same number of arguments as the current function.  */
       || (targetm.calls.return_pops_args (fndecl, funtype, args_size.constant)
--- a/gcc/calls.c~	Tue Jan 17 06:00:44 2012 +0900
+++ b/gcc/calls.c~	Tue Jan 17 06:11:37 2012 +0900
@@ -2335,7 +2335,12 @@
 #endif
       /* Check whether the target is able to optimize the call
 	 into a sibcall.  */
+#ifndef noCbC
+      || (!targetm.function_ok_for_sibcall (fndecl, exp)
+	  && (!fndecl || !CbC_IS_CODE_SEGMENT (TREE_TYPE (fndecl))))
+#else
       || !targetm.function_ok_for_sibcall (fndecl, exp)
+#endif
       /* Functions that do not return exactly once may not be sibcall
 	 optimized.  */
       || (flags & (ECF_RETURNS_TWICE | ECF_NORETURN))
@@ -2348,8 +2353,14 @@
 	 function, we cannot change it into a sibling call.
 	 crtl->args.pretend_args_size is not part of the
 	 stack allocated by our caller.  */
+#ifndef noCbC
+      || (args_size.constant > (crtl->args.size
+				- crtl->args.pretend_args_size)
+          && (!fndecl || !CbC_IS_CODE_SEGMENT (TREE_TYPE (fndecl))))
+#else
       || args_size.constant > (crtl->args.size
-			       - crtl->args.pretend_args_size)
+                               - crtl->args.pretend_args_size)
+#endif
       /* If the callee pops its own arguments, then it must pop exactly
 	 the same number of arguments as the current function.  */
       || (targetm.calls.return_pops_args (fndecl, funtype, args_size.constant)