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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jason at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-09-14 
16:17:38 UTC ---
I'd say the bug is somewhere on the C++ FE side, this is a
DEF_C99_C90_RES_BUILTIN, in -std=c++03 -O2 we don't ICE on it, but with -O2
(-std=gnu++03 or -std=c++11 or -std=gnu++11) somehow it is marked as builtin,
but doesn't inherit throw () from the builtin.
IMHO that doesn't make sense.  Either it is not builtin and we therefore
shouldn't treat it as such, or it is builtin and then we should know that it
never throws.
Sure, tree-ssa-math-opts.c could have added lots of
maybe_clean_or_replace_eh_stmt and gimple_purge_all_dead_eh_edges calls just in
case or give up optimizing if the calls can throw, but none of those builtins
really ever throw, so my preference would be to fix this there.  Jason?

Reply via email to