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