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