Mercurial > hg > CbC > CbC_gcc
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) |