https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106078

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
           Keywords|                            |wrong-code
             Status|NEW                         |ASSIGNED

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Jan Hubicka from comment #0)
> Here I think it is invalid to move *b out of the loop with
> -fnon-call-exceptions:
> 
> int array[10000];
> int test(short *b,int e, int f)
> {
>         for (int i = 0; i<10000;i++)
>           {
>             e/=f;
>             array[i]+=*b+e;
>           }
> }

LIM uses nonpure_call_p to see whether a stmt possibly terminates a block
(and 'contains_call').  We probably have to treat const/pure throwing
calls and general throwing (or trapping) stmts the same way.

Reply via email to