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