Displaying 4 results from an estimated 4 matches for "gimple_call_flag".
Did you mean:
gimple_call_flags
2017 Jan 03
3
RFC: Allow readnone and readonly functions to throw exceptions
...ut.
GCC isn't as consistent as one may think here.
/* Non-looping const functions always return normally.
Otherwise the call might not return or have side-effects
that forbids hoisting possibly trapping expressions
before it. */
int flags = gimple_call_flags (stmt);
if (!(flags & ECF_CONST)
|| (flags & ECF_LOOPING_CONST_OR_PURE))
BB_MAY_NOTRETURN (block) = 1;
}
It also, for example, will do this:
double cos (double) __attribute__ ((const));
double sin (double) __attribute__ ((const));
double f(double...
2017 Jan 05
2
RFC: Allow readnone and readonly functions to throw exceptions
...t;>
>> /* Non-looping const functions always return normally.
>> Otherwise the call might not return or have side-effects
>> that forbids hoisting possibly trapping expressions
>> before it. */
>> int flags = gimple_call_flags (stmt);
>> if (!(flags & ECF_CONST)
>> || (flags & ECF_LOOPING_CONST_OR_PURE))
>> BB_MAY_NOTRETURN (block) = 1;
>> }
>>
>> It also, for example, will do this:
>> double cos (double) __attribute__ ((cons...
2017 Jan 03
2
RFC: Allow readnone and readonly functions to throw exceptions
Hi Michael,
On Mon, Jan 2, 2017 at 11:49 PM, Michael Kuperstein
<michael.kuperstein at gmail.com> wrote:
> This sounds right to me.
>
> IIUC, historically, readonly and readnone are meant to model the "pure" and
> "const" GCC attributes. These attributes make pretty strong guarantees:
>
> "[a pure] function can be subject to common subexpression
2017 Jan 05
3
RFC: Allow readnone and readonly functions to throw exceptions
...ooping const functions always return normally.
>>>> Otherwise the call might not return or have side-effects
>>>> that forbids hoisting possibly trapping expressions
>>>> before it. */
>>>> int flags = gimple_call_flags (stmt);
>>>> if (!(flags & ECF_CONST)
>>>> || (flags & ECF_LOOPING_CONST_OR_PURE))
>>>> BB_MAY_NOTRETURN (block) = 1;
>>>> }
>>>>
>>>> It also, for example, will do this:...