------- Comment #1 from rguenth at gcc dot gnu dot org  2008-06-13 08:14 -------
Confirmed.  We do not create a EH region in the first place even though
fprintf and fputs could throw.  When CCP folds fputs to fputc it hits
the propagator assert

      if (tree_could_throw_p (new_stmt))
        {
          eh_region = lookup_stmt_eh_region (stmt);
          /* We couldn't possibly turn a nothrow into a throw statement.  */
          gcc_assert (eh_region >= 0);

where /* We couldn't possibly turn a nothrow into a throw statement.  */ is
obviously only true if we'd have created a EH region in the first place.

So either that we didn't is a bug or the assert should be

   gcc_assert (eh_region >= 0 || tree_could_throw_p (stmt));


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
          Component|c++                         |tree-optimization
     Ever Confirmed|0                           |1
           Keywords|                            |ice-on-valid-code
      Known to work|                            |4.3.1
   Last reconfirmed|0000-00-00 00:00:00         |2008-06-13 08:14:17
               date|                            |
            Summary|ice for legal code with -O2 |[4.4 Regression] ice for
                   |                            |legal code with -O2
   Target Milestone|---                         |4.4.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36511

Reply via email to