[Bug rtl-optimization/83321] Conditional jump or move depends on uninitialised value in ira.c/ira-color.c

trippels at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Dec 8 15:32:00 GMT 2017


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83321

--- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
It makes no sense:

==23914== Conditional jump or move depends on uninitialised value(s)            
==23914==    at 0x10C8165: improve_allocation() (ira-color.c:2820)              
==23914==    by 0x10C12B8: UnknownInlinedFun (ira-color.c:3150)                 
==23914==    by 0x10C12B8: color_pass(ira_loop_tree_node*) [clone
.lto_priv.9395] (ira-color.c:3259)
==23914==    by 0xF51C1E: ira_traverse_loop_tree(bool, ira_loop_tree_node*,
void (*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*))
(ira-build.c:1781)
==23914==    by 0xF83AEE: UnknownInlinedFun (ira-color.c:3410)                  
==23914==    by 0xF83AEE: UnknownInlinedFun (ira-color.c:4784)                  
==23914==    by 0xF83AEE: ira_color() (ira-color.c:4899)           
==23914==    by 0xF0D4C5: UnknownInlinedFun (ira.c:5286)                        
==23914==    by 0xF0D4C5: (anonymous namespace)::pass_ira::execute(function*)
[clone .lto_priv.2822] (ira.c:5584)                                           
==23914==    by 0x5DB61E: execute_one_pass(opt_pass*) [clone .cold.509]
(passes.c:2497)                                                                 
==23914==    by 0xC85404: UnknownInlinedFun (passes.c:2586)                     
==23914==    by 0xC85404: UnknownInlinedFun (passes.c:2587)                     
==23914==    by 0xC85404: execute_pass_list(function*, opt_pass*)
(passes.c:2597)                                                                 
==23914==    by 0xDF4B53: cgraph_node::expand() (cgraphunit.c:2139)             
==23914==    by 0xC1941B: UnknownInlinedFun (cgraphunit.c:2275)                 
==23914==    by 0xC1941B: symbol_table::compile() (cgraphunit.c:2623)           
==23914==    by 0xC14E7C: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2716)         
==23914==    by 0xC07EAA: compile_file() [clone .lto_priv.3055] (toplev.c:480)  
==23914==    by 0xB6E217: UnknownInlinedFun (toplev.c:2059)                     
==23914==    by 0xB6E217: toplev::main(int, char**) (toplev.c:2194)             
==23914==  Uninitialised value was created by a client request                  
==23914==    at 0xD02289: base_pool_allocator<memory_block_pool>::allocate()
(alloc-pool.h:419)
==23914==    by 0xF544EB: UnknownInlinedFun (alloc-pool.h:502)                  
==23914==    by 0xF544EB: ira_create_allocno(int, bool, ira_loop_tree_node*)
(ira-build.c:486)                   
==23914==    by 0xF54123: create_insn_allocnos(rtx_def*, rtx_def*, bool)
(ira-build.c:1852)
==23914==    by 0xF52DE5: UnknownInlinedFun (ira-build.c:1888)                  
==23914==    by 0xF52DE5: UnknownInlinedFun (ira-build.c:1896)                  
==23914==    by 0xF52DE5: UnknownInlinedFun (ira-build.c:1918)                  
==23914==    by 0xF52DE5: create_loop_tree_node_allocnos(ira_loop_tree_node*)
(ira-build.c:1964)                                                              
==23914==    by 0xF51CB8: ira_traverse_loop_tree(bool, ira_loop_tree_node*,
void (*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*))
(ira-build.c:1799)                       
==23914==    by 0xF47DF7: UnknownInlinedFun (ira-build.c:2060)                  
==23914==    by 0xF47DF7: ira_build() (ira-build.c:3420)                        
==23914==    by 0xF0D074: UnknownInlinedFun (ira.c:5273)                        
==23914==    by 0xF0D074: (anonymous namespace)::pass_ira::execute(function*)
[clone .lto_priv.2822] (ira.c:5584)
==23914==    by 0x5DB61E: execute_one_pass(opt_pass*) [clone .cold.509]
(passes.c:2497)                                                                 
==23914==    by 0xC85404: UnknownInlinedFun (passes.c:2586)                     
==23914==    by 0xC85404: UnknownInlinedFun (passes.c:2587)                     
==23914==    by 0xC85404: execute_pass_list(function*, opt_pass*)
(passes.c:2597)              
==23914==    by 0xDF4B53: cgraph_node::expand() (cgraphunit.c:2139)             
==23914==    by 0xC1941B: UnknownInlinedFun (cgraphunit.c:2275)                 
==23914==    by 0xC1941B: symbol_table::compile() (cgraphunit.c:2623)           
==23914==    by 0xC14E7C: symbol_table::finalize_compilation_unit()
(cgraphunit.c:2716) 

and alloc-pool.h:419 reads:
 419   VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED (header, size)); 

So somehow VALGRIND_DISCARD gets ignored with -O3.
Looks more like a valgrind bug.


More information about the Gcc-bugs mailing list