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.