http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54783
Bug #: 54783 Summary: [4.8 Regression] valgrind reports using uninitialised data in mark_pseudo_regno_live and make_object_born on basic code Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: zso...@seznam.cz Created attachment 28331 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28331 reduced testcase Compiler output: $ gcc testcase.c -wrapper valgrind,-q,--track-origins=yes,--num-callers=40 ==11379== Conditional jump or move depends on uninitialised value(s) ==11379== at 0x8A14AD: mark_pseudo_regno_live(int) (sparseset.h:147) ==11379== by 0x8A27AC: process_bb_node_lives(ira_loop_tree_node*) (ira-lives.c:1326) ==11379== by 0x888C1A: ira_traverse_loop_tree(bool, ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*)) (ira-build.c:1495) ==11379== by 0x8A3AB1: ira_create_allocno_live_ranges() (ira-lives.c:1591) ==11379== by 0x88B52C: ira_build() (ira-build.c:3093) ==11379== by 0x883936: rest_of_handle_ira() (ira.c:4223) ==11379== by 0x8FF80C: execute_one_pass(opt_pass*) (passes.c:2191) ==11379== by 0x8FFBC4: execute_pass_list(opt_pass*) (passes.c:2246) ==11379== by 0x8FFBD6: execute_pass_list(opt_pass*) (passes.c:2247) ==11379== by 0x6C26A7: expand_function(cgraph_node*) (cgraphunit.c:1601) ==11379== by 0x6C4811: compile() (cgraphunit.c:1794) ==11379== by 0x6C4B34: finalize_compilation_unit() (cgraphunit.c:2080) ==11379== by 0x5A171F: c_write_global_declarations() (c-decl.c:10116) ==11379== by 0x9E6234: compile_file() (toplev.c:560) ==11379== by 0x9E7E09: toplev_main(int, char**) (toplev.c:1863) ==11379== by 0x5A334BC: (below main) (in /lib64/libc-2.15.so) ==11379== Uninitialised value was created by a heap allocation ==11379== at 0x4C29A80: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==11379== by 0x1168107: xmalloc (xmalloc.c:147) ==11379== by 0x9CC85F: sparseset_alloc(unsigned long) (sparseset.c:33) ==11379== by 0x8A3A3F: ira_create_allocno_live_ranges() (ira-lives.c:1583) ==11379== by 0x88B52C: ira_build() (ira-build.c:3093) ==11379== by 0x883936: rest_of_handle_ira() (ira.c:4223) ==11379== by 0x8FF80C: execute_one_pass(opt_pass*) (passes.c:2191) ==11379== by 0x8FFBC4: execute_pass_list(opt_pass*) (passes.c:2246) ==11379== by 0x8FFBD6: execute_pass_list(opt_pass*) (passes.c:2247) ==11379== by 0x6C26A7: expand_function(cgraph_node*) (cgraphunit.c:1601) ==11379== by 0x6C4811: compile() (cgraphunit.c:1794) ==11379== by 0x6C4B34: finalize_compilation_unit() (cgraphunit.c:2080) ==11379== by 0x5A171F: c_write_global_declarations() (c-decl.c:10116) ==11379== by 0x9E6234: compile_file() (toplev.c:560) ==11379== by 0x9E7E09: toplev_main(int, char**) (toplev.c:1863) ==11379== by 0x5A334BC: (below main) (in /lib64/libc-2.15.so) ==11379== ==11379== Conditional jump or move depends on uninitialised value(s) ==11379== at 0x8A138A: make_object_born(ira_object*) (sparseset.h:147) ==11379== by 0x8A14CA: mark_pseudo_regno_live(int) (ira-lives.c:295) ==11379== by 0x8A27AC: process_bb_node_lives(ira_loop_tree_node*) (ira-lives.c:1326) ==11379== by 0x888C1A: ira_traverse_loop_tree(bool, ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*)) (ira-build.c:1495) ==11379== by 0x8A3AB1: ira_create_allocno_live_ranges() (ira-lives.c:1591) ==11379== by 0x88B52C: ira_build() (ira-build.c:3093) ==11379== by 0x883936: rest_of_handle_ira() (ira.c:4223) ==11379== by 0x8FF80C: execute_one_pass(opt_pass*) (passes.c:2191) ==11379== by 0x8FFBC4: execute_pass_list(opt_pass*) (passes.c:2246) ==11379== by 0x8FFBD6: execute_pass_list(opt_pass*) (passes.c:2247) ==11379== by 0x6C26A7: expand_function(cgraph_node*) (cgraphunit.c:1601) ==11379== by 0x6C4811: compile() (cgraphunit.c:1794) ==11379== by 0x6C4B34: finalize_compilation_unit() (cgraphunit.c:2080) ==11379== by 0x5A171F: c_write_global_declarations() (c-decl.c:10116) ==11379== by 0x9E6234: compile_file() (toplev.c:560) ==11379== by 0x9E7E09: toplev_main(int, char**) (toplev.c:1863) ==11379== by 0x5A334BC: (below main) (in /lib64/libc-2.15.so) ==11379== Uninitialised value was created by a heap allocation ==11379== at 0x4C29A80: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==11379== by 0x1168107: xmalloc (xmalloc.c:147) ==11379== by 0x9CC85F: sparseset_alloc(unsigned long) (sparseset.c:33) ==11379== by 0x8A3A3F: ira_create_allocno_live_ranges() (ira-lives.c:1583) ==11379== by 0x88B52C: ira_build() (ira-build.c:3093) ==11379== by 0x883936: rest_of_handle_ira() (ira.c:4223) ==11379== by 0x8FF80C: execute_one_pass(opt_pass*) (passes.c:2191) ==11379== by 0x8FFBC4: execute_pass_list(opt_pass*) (passes.c:2246) ==11379== by 0x8FFBD6: execute_pass_list(opt_pass*) (passes.c:2247) ==11379== by 0x6C26A7: expand_function(cgraph_node*) (cgraphunit.c:1601) ==11379== by 0x6C4811: compile() (cgraphunit.c:1794) ==11379== by 0x6C4B34: finalize_compilation_unit() (cgraphunit.c:2080) ==11379== by 0x5A171F: c_write_global_declarations() (c-decl.c:10116) ==11379== by 0x9E6234: compile_file() (toplev.c:560) ==11379== by 0x9E7E09: toplev_main(int, char**) (toplev.c:1863) ==11379== by 0x5A334BC: (below main) (in /lib64/libc-2.15.so) ==11379== Tested revisions: r191953 - fail r191586 - fail 4.7 r191640 - OK