https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84876
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Perhaps it would help to catch this earlier if the pointers were cleared after freeing. And perhaps the clearing needs to be done in another function, and not done in fails_p in lra_assign, but left for the caller to clear it later after the lra_split_hard_reg_for call. ==18696== Invalid read of size 4 ==18696== at 0xD87999: lra_split_hard_reg_for() (lra-assigns.c:1758) ==18696== by 0xD80591: lra(_IO_FILE*) (lra.c:2507) ==18696== by 0xD27C63: do_reload() (ira.c:5465) ==18696== by 0xD28156: (anonymous namespace)::pass_reload::execute(function*) (ira.c:5649) ==18696== by 0xE7506C: execute_one_pass(opt_pass*) (passes.c:2497) ==18696== by 0xE753BD: execute_pass_list_1(opt_pass*) (passes.c:2586) ==18696== by 0xE753EE: execute_pass_list_1(opt_pass*) (passes.c:2587) ==18696== by 0xE75446: execute_pass_list(function*, opt_pass*) (passes.c:2597) ==18696== by 0x9F7D3B: cgraph_node::expand() (cgraphunit.c:2139) ==18696== by 0x9F8800: output_in_order() (cgraphunit.c:2381) ==18696== by 0x9F8ED5: symbol_table::compile() (cgraphunit.c:2623) ==18696== by 0x9F914E: symbol_table::finalize_compilation_unit() (cgraphunit.c:2717) ==18696== Address 0xd3fe27c is 380 bytes inside a block of size 396 free'd ==18696== at 0x4C30D18: free (vg_replace_malloc.c:530) ==18696== by 0xD87625: lra_assign(bool&) (lra-assigns.c:1655) ==18696== by 0xD80516: lra(_IO_FILE*) (lra.c:2482) ==18696== by 0xD27C63: do_reload() (ira.c:5465) ==18696== by 0xD28156: (anonymous namespace)::pass_reload::execute(function*) (ira.c:5649) ==18696== by 0xE7506C: execute_one_pass(opt_pass*) (passes.c:2497) ==18696== by 0xE753BD: execute_pass_list_1(opt_pass*) (passes.c:2586) ==18696== by 0xE753EE: execute_pass_list_1(opt_pass*) (passes.c:2587) ==18696== by 0xE75446: execute_pass_list(function*, opt_pass*) (passes.c:2597) ==18696== by 0x9F7D3B: cgraph_node::expand() (cgraphunit.c:2139) ==18696== by 0x9F8800: output_in_order() (cgraphunit.c:2381) ==18696== by 0x9F8ED5: symbol_table::compile() (cgraphunit.c:2623) ==18696== Block was alloc'd at ==18696== at 0x4C2FB6B: malloc (vg_replace_malloc.c:299) ==18696== by 0x1D26807: xmalloc (xmalloc.c:147) ==18696== by 0xD87229: lra_assign(bool&) (lra-assigns.c:1601) ==18696== by 0xD80516: lra(_IO_FILE*) (lra.c:2482) ==18696== by 0xD27C63: do_reload() (ira.c:5465) ==18696== by 0xD28156: (anonymous namespace)::pass_reload::execute(function*) (ira.c:5649) ==18696== by 0xE7506C: execute_one_pass(opt_pass*) (passes.c:2497) ==18696== by 0xE753BD: execute_pass_list_1(opt_pass*) (passes.c:2586) ==18696== by 0xE753EE: execute_pass_list_1(opt_pass*) (passes.c:2587) ==18696== by 0xE75446: execute_pass_list(function*, opt_pass*) (passes.c:2597) ==18696== by 0x9F7D3B: cgraph_node::expand() (cgraphunit.c:2139) ==18696== by 0x9F8800: output_in_order() (cgraphunit.c:2381) ==18696== ==18696== Invalid write of size 4 ==18696== at 0xD879DF: lra_split_hard_reg_for() (lra-assigns.c:1761) ==18696== by 0xD80591: lra(_IO_FILE*) (lra.c:2507) ==18696== by 0xD27C63: do_reload() (ira.c:5465) ==18696== by 0xD28156: (anonymous namespace)::pass_reload::execute(function*) (ira.c:5649) ==18696== by 0xE7506C: execute_one_pass(opt_pass*) (passes.c:2497) ==18696== by 0xE753BD: execute_pass_list_1(opt_pass*) (passes.c:2586) ==18696== by 0xE753EE: execute_pass_list_1(opt_pass*) (passes.c:2587) ==18696== by 0xE75446: execute_pass_list(function*, opt_pass*) (passes.c:2597) ==18696== by 0x9F7D3B: cgraph_node::expand() (cgraphunit.c:2139) ==18696== by 0x9F8800: output_in_order() (cgraphunit.c:2381) ==18696== by 0x9F8ED5: symbol_table::compile() (cgraphunit.c:2623) ==18696== by 0x9F914E: symbol_table::finalize_compilation_unit() (cgraphunit.c:2717) ==18696== Address 0x65fec60 is 0 bytes inside a block of size 396 free'd ==18696== at 0x4C30D18: free (vg_replace_malloc.c:530) ==18696== by 0xD87634: lra_assign(bool&) (lra-assigns.c:1656) ==18696== by 0xD80516: lra(_IO_FILE*) (lra.c:2482) ==18696== by 0xD27C63: do_reload() (ira.c:5465) ==18696== by 0xD28156: (anonymous namespace)::pass_reload::execute(function*) (ira.c:5649) ==18696== by 0xE7506C: execute_one_pass(opt_pass*) (passes.c:2497) ==18696== by 0xE753BD: execute_pass_list_1(opt_pass*) (passes.c:2586) ==18696== by 0xE753EE: execute_pass_list_1(opt_pass*) (passes.c:2587) ==18696== by 0xE75446: execute_pass_list(function*, opt_pass*) (passes.c:2597) ==18696== by 0x9F7D3B: cgraph_node::expand() (cgraphunit.c:2139) ==18696== by 0x9F8800: output_in_order() (cgraphunit.c:2381) ==18696== by 0x9F8ED5: symbol_table::compile() (cgraphunit.c:2623) ==18696== Block was alloc'd at ==18696== at 0x4C2FB6B: malloc (vg_replace_malloc.c:299) ==18696== by 0x1D26807: xmalloc (xmalloc.c:147) ==18696== by 0xD871F9: lra_assign(bool&) (lra-assigns.c:1599) ==18696== by 0xD80516: lra(_IO_FILE*) (lra.c:2482) ==18696== by 0xD27C63: do_reload() (ira.c:5465) ==18696== by 0xD28156: (anonymous namespace)::pass_reload::execute(function*) (ira.c:5649) ==18696== by 0xE7506C: execute_one_pass(opt_pass*) (passes.c:2497) ==18696== by 0xE753BD: execute_pass_list_1(opt_pass*) (passes.c:2586) ==18696== by 0xE753EE: execute_pass_list_1(opt_pass*) (passes.c:2587) ==18696== by 0xE75446: execute_pass_list(function*, opt_pass*) (passes.c:2597) ==18696== by 0x9F7D3B: cgraph_node::expand() (cgraphunit.c:2139) ==18696== by 0x9F8800: output_in_order() (cgraphunit.c:2381)