Displaying 4 results from an estimated 4 matches for "ecf_looping_const_or_pure".
2017 Jan 03
3
RFC: Allow readnone and readonly functions to throw exceptions
...tions 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 a)
{
double b;
double c,d;
double (*fp) (double) __attribute__ ((const));
/* Partially r...
2017 Jan 05
2
RFC: Allow readnone and readonly functions to throw exceptions
...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 a)
>> {
>> doubl...
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
...s
>>>> 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));
>>&...