Hello! >> The following patch fixes >> >> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55430 >> >> The patch was successfully bootstrapped and tested on x86/x86-64. >> >> Committed as rev. 193742. >> >> 2012-11-22 Vladimir Makarov <vmaka...@redhat.com> >> >> PR middle-end/55430 >> * lra.c: Move #include "hard-reg-set.h" before #include "rtl.h". >> (new_insn_reg): Update biggest_mode. >> (collect_non_operand_hard_regs): Check eliminable regs too. >> (initialize_lra_reg_info_element): Initialize biggest_mode. >> (add_regs_to_insn_regno_info): Ignore non-allocatable >> non-eliminable hard regs. >> (lra.c): Move setting lra_no_alloc_regs before >> init_insn_recog_data. >> * lra-constraints.c (simplify_operand_subreg): Add a comment. >> (lra_constraints): Ignore equivalent memory of >> regs occuring in paradoxical subregs. >> * lra-lives.c (lra_create_live_ranges): Add a comment. >> >> > > On Linux/x86-64, this caused: > > FAIL: gcc.target/i386/avx-vzeroupper-16.c (internal compiler error) > FAIL: gcc.target/i386/avx-vzeroupper-16.c (test for excess errors) > FAIL: gcc.target/i386/avx-vzeroupper-17.c (internal compiler error) > FAIL: gcc.target/i386/avx-vzeroupper-17.c (test for excess errors) > FAIL: gcc.target/i386/avx-vzeroupper-18.c (internal compiler error) > FAIL: gcc.target/i386/avx-vzeroupper-18.c (test for excess errors) > FAIL: gcc.target/i386/pr43869.c (internal compiler error) > FAIL: gcc.target/i386/pr43869.c (test for excess errors) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-1.c (internal compiler error) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-1.c (test for excess errors) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-3.c (internal compiler error) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-3.c (test for excess errors) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-4a.c (internal compiler error) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-4a.c (test for excess errors) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-4b.c (internal compiler error) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-4b.c (test for excess errors) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-5a.c (internal compiler error) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-5a.c (test for excess errors) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-5b.c (internal compiler error) > FAIL: gcc.target/x86_64/abi/callabi/vaarg-5b.c (test for excess errors)
Compiling gcc.target/i386/pr43869.c, I got a couple of valgrind errors: bugged ==13536== Conditional jump or move depends on uninitialised value(s) ==13536== at 0x7C821D: mark_pseudo_regno_live(int) (sparseset.h:147) ==13536== by 0x7C9234: process_bb_node_lives(ira_loop_tree_node*) (ira-lives.c:1322) ==13536== by 0x7B2BB8: ira_traverse_loop_tree(bool, ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*)) (ira-build.c:1604) ==13536== by 0x7C9E11: ira_create_allocno_live_ranges() (ira-lives.c:1596) ==13536== by 0x7B34CC: ira_build() (ira-build.c:3198) ==13536== Conditional jump or move depends on uninitialised value(s) ==13536== at 0x7C80F7: make_object_born(ira_object*) (sparseset.h:147) ==13536== by 0x7C823A: mark_pseudo_regno_live(int) (ira-lives.c:295) ==13536== by 0x7C9234: process_bb_node_lives(ira_loop_tree_node*) (ira-lives.c:1322) ==13536== by 0x7B2BB8: ira_traverse_loop_tree(bool, ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*)) (ira-build.c:1604) ==13536== by 0x7C9E11: ira_create_allocno_live_ranges() (ira-lives.c:1596) ==13536== by 0x7B34CC: ira_build() (ira-build.c:3198) isbugged ==13536== Invalid read of size 4 ==13536== at 0x7DCF50: new_insn_reg(int, op_type, machine_mode, bool, bool, lra_insn_reg*) (lra.c:464) ==13536== by 0x7DD623: collect_non_operand_hard_regs(rtx_def**, lra_insn_recog_data*, lra_insn_reg*, op_type, bool) (lra.c:947) ==13536== by 0x7DD660: collect_non_operand_hard_regs(rtx_def**, lra_insn_recog_data*, lra_insn_reg*, op_type, bool) (lra.c:986) ==13536== by 0x7DE43C: lra_set_insn_recog_data(rtx_def*) (lra.c:1131) ==13536== by 0x7DEE85: check_rtl(bool) (lra-int.h:420) ==13536== by 0x7DFF5E: lra(_IO_FILE*) (lra.c:2218) ==13536== Invalid write of size 4 ==13536== at 0x7DCF63: new_insn_reg(int, op_type, machine_mode, bool, bool, lra_insn_reg*) (lra.c:465) ==13536== by 0x7DD623: collect_non_operand_hard_regs(rtx_def**, lra_insn_recog_data*, lra_insn_reg*, op_type, bool) (lra.c:947) ==13536== by 0x7DD660: collect_non_operand_hard_regs(rtx_def**, lra_insn_recog_data*, lra_insn_reg*, op_type, bool) (lra.c:986) ==13536== by 0x7DE43C: lra_set_insn_recog_data(rtx_def*) (lra.c:1131) ==13536== by 0x7DEE85: check_rtl(bool) (lra-int.h:420) ==13536== by 0x7DFF5E: lra(_IO_FILE*) (lra.c:2218) main The fail is not reproducible under gdb. Uros.