c++/9786: [3.2/3.3/3.4 regression] Ice in fixup_abnormal_edges with -fnon-call-exceptions -O2

Nick Rasmussen nick@ilm.com
Sun Mar 2 01:31:00 GMT 2003


I traced the -fnon-call-exceptions ICE I reported in PR 9786
back to the following two checkins:

Wed Mar  6 10:59:39 CET 2002  Jan Hubicka  <jh@suse.cz>

         * cfgrtl.c (delete_insn_and_edges, delete_insn_chain_and_edges): New.
         * rtl.h (delete_insn_and_edges, delete_insn_chain_and_edges): Declare

         * basic-block.h (update_life_info, update_life_info_in_dirty_blocks,
         delete_noop_moves): Return indeger.
         * flow.c (ndead): New variable.
         (propagate_block_delete_insn): Use delete_insn_and_edges; remove
         BB argument; update callers.
         (propagate_block_delete_libcall): Use delete_insn_chain_and_edges.
         (life_analysis): Do not call purge_all_dead_edges.
         (update_life_info): Return number of deleted insns; print statistics.
         (update_life_info_in_dirty_blocks): likewise.
         (delete_noop_moves): Use delete_insn_and_edges; print statistics;
         return number of insns deleted.

         * cse.c: Include timevar.h
         (delete_trivially_dead_insns): Kill preserve_basic_blocks argument;
         iterate until stabilizes; print statistics; return number of killed
         insns.
         * Makefile.in: (cse.o): Add timevar.h dependency
         * rtl.h (delete_trivially_dead_insns): New.
         * timever.def: Add TV_DELETE_TRIVIALLY_DEAD timer.
         * toplev.c (rest_of_compilation): Update callers.

         * cfgcleanup.c (try_optimize_cfg): Kill blocks.
         (try_optimize_cfg): Do not update liveness.
         (cleanup-cfg): Loop until try_optimize_cfg and dead code
         removal stabilizes; use delete_trivially_dead_insns.

         * cfgrtl.c (verify_flow_info): Sanity check outgoing edges.


(cvs date tag "2002-03-06 02:20")
changed the succesful compilation into:

pr9786.C: In constructor `B::B(const D2&)':
pr9786.C:23: Missing REG_EH_REGION note in the end of bb 4
pr9786.C:23: verify_flow_info failed
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

then:

Thu Mar  7 16:33:54 CET 2002  Jan Hubicka  <jh@suse.cz>

         * basic-block.h (fixup_abnormal_edges): Declare.
         * reload1.c (fixup_abnormal_edges): New function.
         * reg-stack.c (convert_regs): Use it.

         * gcse.c (insert_insn_end_bb): Handle trapping insns.

         * gcse.c (hash_scan_set): Refuse instructions with EH edges.

changed the compiler error to:

pr9786.C: In constructor `B::B(const D2&)':
pr9786.C:23: Internal compiler error in fixup_abnormal_edges, at reload1.c:9506
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

I've attached the example that I submitted with the PR modified for inclusion
in the g++.dg testsuite.

-nick
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: pr9786.C
URL: <http://gcc.gnu.org/pipermail/gcc-bugs/attachments/20030302/1acc8ed5/attachment.ksh>


More information about the Gcc-bugs mailing list