Clarifying attribute-const

Alexander Monakov amonakov@ispras.ru
Thu Oct 1 15:34:00 GMT 2015


On Fri, 25 Sep 2015, Eric Botcazou wrote:

> > First, a belated follow-up to https://gcc.gnu.org/PR66512 . The bug is
> > asking why attribute-const appears to have a weaker effect in C++, compared
> > to C. The answer in that bug is that GCC assumes that attribute-const
> > function can terminate by throwing an exception.
> 
> FWIW there is an equivalent semantics in Ada: the "const" functions can throw 
> and the language explicitly allows them to be CSEd in this case, etc.

Can you expand on the "etc." a bit, i.e., may the compiler ...

  - move a call to a "const" function above a conditional branch, 
    causing a conditional throw to happen unconditionally?

  - move a call to a "const" function below a conditional branch, 
    causing an unconditional throw to happen only conditionally?

  - reorder calls to "const" functions  w.r.t. code with side effects, or
    other throwing functions?

(all of the above in the context of Ada)

Thanks.
Alexander



More information about the Gcc mailing list