------- Comment #1 from zadeck at naturalbridge dot com 2008-05-08 16:46 ------- Subject: Re: [4.4 Regression] g++.dg/tree-ssa/pr19637.C ICEs with 135041 -> 135057
Here is the bug. I do not know if this is just an illegal insn generated by a bad port or if we are missing something in the dce code. the dce code is deleting insn 12: (call_insn/u 12 11 47 2 /home/zadeck/gcc36177/gcc/testsuite/g++.dg/opt/pr23714.C:11 (parallel [ (set (reg:SF 10 r10) (call (mem:QI (reg/f:SI 31) [0 S1 A8]) (const_int 0 [0x0]))) (clobber (reg:SI 16 srp)) ]) 224 {*expanded_call_value_non_v32} (expr_list:REG_EH_REGION (const_int 1 [0x1]) (nil)) (expr_list:REG_DEP_TRUE (use (reg:SF 11 r11)) (expr_list:REG_DEP_TRUE (use (reg:SF 10 r10)) (nil)))) I would have thought that since this can generate an exception and it is a call insn that it would have been declared as a non deleteable insn by dce.c:deleteable_insn_p. It is also clearly a jump insn even though we do not see it as such since it is buried in a parallel. In particular, i assume that the dce code is getting confused because it does not see the call inside the parallel. i do not know if this is a bug in the cris port or if there are other cases that need to be added to dce. This is for the rtl trained professionals to determine. kenny -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36177