search for: ecf_looping_const_or_pur

Displaying 4 results from an estimated 4 matches for "ecf_looping_const_or_pur".

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...
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) >> { >> doub...
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)); >>...