Hi!

I upgraded from GCC 4.2.1 to GCC 4.3.1. But with this new version I can't compile any program with my back-end which works with GCC 4.2.1. I get the following error message:

empty-void.c: In function 'main':
empty-void.c:15: error: unrecognizable insn:
(insn 14 4 15 empty-void.c:14 (parallel [
            (set (reg/f:SI 45 A13)
                (plus:SI (reg/f:SI 45 A13)
                    (const_int -32 [0xffffffe0])))
            (clobber (reg:CC 49 CONDSEL))
        ]) -1 (nil))
empty-void.c:15: internal compiler error: in insn_default_length, at insn-attrtab.c:417

This insn belongs to the epilogue code. The error message is emitted AFTER expanding the prologue and the epilogue where I emit additional instructions but BEFORE reorganization. In 4.2.1 I solved this kind of errors by calling the functions "init_insn_lengths ();" and "shorten_branches (get_insns ());" I call "init_insn_lengths()" after expanding the prologue and the epilogue but that doesn't show any difference.

 The backtrace is:
(gdb) bt
#0  insn_default_length (insn=0x406e35a0) at insn-attrtab.c:415
#1 0x001569d0 in shorten_branches (first=0x40c83720) at ../../ gcc-4.3.1/gcc/final.c:1128 #2 0x00156b93 in rest_of_handle_shorten_branches () at ../../ gcc-4.3.1/gcc/final.c:4190 #3 0x0021a071 in execute_one_pass (pass=0x4b89e0) at ../../gcc-4.3.1/ gcc/passes.c:1122 #4 0x0021a247 in execute_pass_list (pass=0x4b89e0) at ../../gcc-4.3.1/ gcc/passes.c:1175

Did I miss a change? Is emitting instructions more restrictive now? How can I solve this?

Thanks,
Boris

Reply via email to