comparison gcc/gimple.h @ 73:ce75bd9117e4

merge calls.c, cfgexpand.c, gcc.c, gimple.c, gimple.h and gimplify.c
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Mon, 22 Aug 2011 01:54:47 +0900
parents b81903832de2
children ab0bcb71f44d
comparison
equal deleted inserted replaced
72:20c18990c3e4 73:ce75bd9117e4
100 GF_CALL_FROM_THUNK = 1 << 1, 100 GF_CALL_FROM_THUNK = 1 << 1,
101 GF_CALL_RETURN_SLOT_OPT = 1 << 2, 101 GF_CALL_RETURN_SLOT_OPT = 1 << 2,
102 GF_CALL_TAILCALL = 1 << 3, 102 GF_CALL_TAILCALL = 1 << 3,
103 GF_CALL_VA_ARG_PACK = 1 << 4, 103 GF_CALL_VA_ARG_PACK = 1 << 4,
104 GF_CALL_NOTHROW = 1 << 5, 104 GF_CALL_NOTHROW = 1 << 5,
105 #ifndef noCbC
106 GF_CALL_CBC_GOTO = 1 << 5,
107 #endif
105 GF_OMP_PARALLEL_COMBINED = 1 << 0, 108 GF_OMP_PARALLEL_COMBINED = 1 << 0,
106 109
107 /* True on an GIMPLE_OMP_RETURN statement if the return does not require 110 /* True on an GIMPLE_OMP_RETURN statement if the return does not require
108 a thread synchronization via some sort of barrier. The exact barrier 111 a thread synchronization via some sort of barrier. The exact barrier
109 that would otherwise be emitted is dependent on the OMP statement with 112 that would otherwise be emitted is dependent on the OMP statement with
2170 s->gsbase.subcode |= GF_CALL_TAILCALL; 2173 s->gsbase.subcode |= GF_CALL_TAILCALL;
2171 else 2174 else
2172 s->gsbase.subcode &= ~GF_CALL_TAILCALL; 2175 s->gsbase.subcode &= ~GF_CALL_TAILCALL;
2173 } 2176 }
2174 2177
2178 #ifndef noCbC
2179 /* If CBCGOTO_P is true, mark call statement S as being a cbc goto
2180 (i.e., a call just before the exit of a function). These calls are
2181 candidate for tail call optimization. */
2182
2183 static inline void
2184 gimple_call_set_cbc_goto (gimple s, bool cbcgoto_p)
2185 {
2186 GIMPLE_CHECK (s, GIMPLE_CALL);
2187 if (cbcgoto_p)
2188 s->gsbase.subcode |= GF_CALL_CBC_GOTO;
2189 else
2190 s->gsbase.subcode &= ~GF_CALL_CBC_GOTO;
2191 }
2192 #endif
2175 2193
2176 /* Return true if GIMPLE_CALL S is marked as a tail call. */ 2194 /* Return true if GIMPLE_CALL S is marked as a tail call. */
2177 2195
2178 static inline bool 2196 static inline bool
2179 gimple_call_tail_p (gimple s) 2197 gimple_call_tail_p (gimple s)
2180 { 2198 {
2181 GIMPLE_CHECK (s, GIMPLE_CALL); 2199 GIMPLE_CHECK (s, GIMPLE_CALL);
2182 return (s->gsbase.subcode & GF_CALL_TAILCALL) != 0; 2200 return (s->gsbase.subcode & GF_CALL_TAILCALL) != 0;
2183 } 2201 }
2184 2202
2203 #ifndef noCbC
2204 /* Return true if GIMPLE_CALL S is marked as a cbc goto. */
2205
2206 static inline bool
2207 gimple_call_cbc_goto_p (gimple s)
2208 {
2209 GIMPLE_CHECK (s, GIMPLE_CALL);
2210 return (s->gsbase.subcode & GF_CALL_CBC_GOTO) != 0;
2211 }
2212 #endif
2185 2213
2186 /* Set the inlinable status of GIMPLE_CALL S to INLINABLE_P. */ 2214 /* Set the inlinable status of GIMPLE_CALL S to INLINABLE_P. */
2187 2215
2188 static inline void 2216 static inline void
2189 gimple_call_set_cannot_inline (gimple s, bool inlinable_p) 2217 gimple_call_set_cannot_inline (gimple s, bool inlinable_p)