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)

Reply via email to