http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60891
Bug ID: 60891 Summary: [4.9/4.10 Regression] ICE: SIGSEGV (Invalid write/read) in pre_and_rev_post_order_compute_fn with -O -fno-tree-ch -fno-tree-cselim -fno-tree-dominator-opts Product: gcc Version: 4.10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: zsojka at seznam dot cz Created attachment 32633 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32633&action=edit reduced testcase Compiler output (under valgrind): $ gcc -O -fno-tree-ch -fno-tree-cselim -fno-tree-dominator-opts testcase.c ==2497== Invalid write of size 4 ==2497== at 0x7464DF: pre_and_rev_post_order_compute_fn(function*, int*, int*, bool) (cfganal.c:981) ==2497== by 0x7465F7: pre_and_rev_post_order_compute(int*, int*, bool) (cfganal.c:1014) ==2497== by 0xC9FBE7: (anonymous namespace)::pass_reassoc::execute() (tree-ssa-reassoc.c:4632) ==2497== by 0xA49D49: execute_one_pass(opt_pass*) (passes.c:2229) ==2497== by 0xA49FE5: execute_pass_list(opt_pass*) (passes.c:2282) ==2497== by 0xA49FF7: execute_pass_list(opt_pass*) (passes.c:2283) ==2497== by 0x786448: expand_function(cgraph_node*) (cgraphunit.c:1774) ==2497== by 0x78842B: compile() (cgraphunit.c:1908) ==2497== by 0x788B94: finalize_compilation_unit() (cgraphunit.c:2329) ==2497== by 0x63C8B3: c_write_global_declarations() (c-decl.c:10401) ==2497== by 0xB3E69C: compile_file() (toplev.c:562) ==2497== by 0xB4066F: toplev_main(int, char**) (toplev.c:1914) ==2497== by 0x5A46BF4: (below main) (in /lib64/libc-2.17.so) ==2497== Address 0x610ecb8 is 0 bytes after a block of size 40 alloc'd ==2497== at 0x4C2C820: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==2497== by 0x143DA37: xmalloc (xmalloc.c:147) ==2497== by 0xC9FB88: (anonymous namespace)::pass_reassoc::execute() (tree-ssa-reassoc.c:4618) ==2497== by 0xA49D49: execute_one_pass(opt_pass*) (passes.c:2229) ==2497== by 0xA49FE5: execute_pass_list(opt_pass*) (passes.c:2282) ==2497== by 0xA49FF7: execute_pass_list(opt_pass*) (passes.c:2283) ==2497== by 0x786448: expand_function(cgraph_node*) (cgraphunit.c:1774) ==2497== by 0x78842B: compile() (cgraphunit.c:1908) ==2497== by 0x788B94: finalize_compilation_unit() (cgraphunit.c:2329) ==2497== by 0x63C8B3: c_write_global_declarations() (c-decl.c:10401) ==2497== by 0xB3E69C: compile_file() (toplev.c:562) ==2497== by 0xB4066F: toplev_main(int, char**) (toplev.c:1914) ==2497== by 0x5A46BF4: (below main) (in /lib64/libc-2.17.so) ==2497== ==2497== Invalid read of size 4 ==2497== at 0xC9FCE6: (anonymous namespace)::pass_reassoc::execute() (tree-ssa-reassoc.c:4648) ==2497== by 0xA49D49: execute_one_pass(opt_pass*) (passes.c:2229) ==2497== by 0xA49FE5: execute_pass_list(opt_pass*) (passes.c:2282) ==2497== by 0xA49FF7: execute_pass_list(opt_pass*) (passes.c:2283) ==2497== by 0x786448: expand_function(cgraph_node*) (cgraphunit.c:1774) ==2497== by 0x78842B: compile() (cgraphunit.c:1908) ==2497== by 0x788B94: finalize_compilation_unit() (cgraphunit.c:2329) ==2497== by 0x63C8B3: c_write_global_declarations() (c-decl.c:10401) ==2497== by 0xB3E69C: compile_file() (toplev.c:562) ==2497== by 0xB4066F: toplev_main(int, char**) (toplev.c:1914) ==2497== by 0x5A46BF4: (below main) (in /lib64/libc-2.17.so) ==2497== Address 0x610ecb8 is 0 bytes after a block of size 40 alloc'd ==2497== at 0x4C2C820: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==2497== by 0x143DA37: xmalloc (xmalloc.c:147) ==2497== by 0xC9FB88: (anonymous namespace)::pass_reassoc::execute() (tree-ssa-reassoc.c:4618) ==2497== by 0xA49D49: execute_one_pass(opt_pass*) (passes.c:2229) ==2497== by 0xA49FE5: execute_pass_list(opt_pass*) (passes.c:2282) ==2497== by 0xA49FF7: execute_pass_list(opt_pass*) (passes.c:2283) ==2497== by 0x786448: expand_function(cgraph_node*) (cgraphunit.c:1774) ==2497== by 0x78842B: compile() (cgraphunit.c:1908) ==2497== by 0x788B94: finalize_compilation_unit() (cgraphunit.c:2329) ==2497== by 0x63C8B3: c_write_global_declarations() (c-decl.c:10401) ==2497== by 0xB3E69C: compile_file() (toplev.c:562) ==2497== by 0xB4066F: toplev_main(int, char**) (toplev.c:1914) ==2497== by 0x5A46BF4: (below main) (in /lib64/libc-2.17.so) ==2497==