diff gcc/gimple.h @ 5:a4c410aa4714

modifing gimple.[ch], cfgexpand.c to make gimple to support cbc goto flags.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Thu, 30 Jul 2009 19:22:01 +0900
parents a06113de4d67
children 9de9dad105d4
line wrap: on
line diff
--- a/gcc/gimple.h	Wed Jul 29 13:46:47 2009 +0900
+++ b/gcc/gimple.h	Thu Jul 30 19:22:01 2009 +0900
@@ -101,6 +101,9 @@
     GF_CALL_RETURN_SLOT_OPT	= 1 << 2,
     GF_CALL_TAILCALL		= 1 << 3,
     GF_CALL_VA_ARG_PACK		= 1 << 4,
+#ifndef noCbC
+	GF_CALL_CBC_GOTO		= 1 << 5,
+#endif
     GF_OMP_PARALLEL_COMBINED	= 1 << 0,
 
     /* True on an GIMPLE_OMP_RETURN statement if the return does not require
@@ -2088,6 +2091,21 @@
     s->gsbase.subcode &= ~GF_CALL_TAILCALL;
 }
 
+#ifndef noCbC
+/* If CBCGOTO_P is true, mark call statement S as being a cbc goto
+   (i.e., a call just before the exit of a function).  These calls are
+   candidate for tail call optimization.  */
+
+static inline void
+gimple_call_set_cbc_goto (gimple s, bool cbcgoto_p)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  if (cbcgoto_p)
+    s->gsbase.subcode |= GF_CALL_CBC_GOTO;
+  else
+    s->gsbase.subcode &= ~GF_CALL_CBC_GOTO;
+}
+#endif
 
 /* Return true if GIMPLE_CALL S is marked as a tail call.  */
 
@@ -2098,6 +2116,16 @@
   return (s->gsbase.subcode & GF_CALL_TAILCALL) != 0;
 }
 
+#ifndef noCbC
+/* Return true if GIMPLE_CALL S is marked as a cbc goto.  */
+
+static inline bool
+gimple_call_cbc_goto_p (gimple s)
+{
+  GIMPLE_CHECK (s, GIMPLE_CALL);
+  return (s->gsbase.subcode & GF_CALL_CBC_GOTO) != 0;
+}
+#endif
 
 /* Set the inlinable status of GIMPLE_CALL S to INLINABLE_P.  */