This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Back-End differences between 4.2.1 and 4.3.1


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]