Summary: | segfault in extract_muldiv for cpu2006 benchmark | ||
---|---|---|---|
Product: | gcc | Reporter: | Pat Haugen <pthaugen> |
Component: | tree-optimization | Assignee: | Sebastian Pop <spop> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | aldot, bergner, dberlin, dje, gcc-bugs, spop |
Priority: | P3 | ||
Version: | 4.3.0 | ||
Target Milestone: | --- | ||
Host: | Target: | powerpc64-linux, x86_64-*-* | |
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2007-10-02 19:58:44 |
Description
Pat Haugen
2007-09-27 21:16:27 UTC
Confirmed. Also happens on x86_64, -O -ftree-loop-linear. We have a freed SSA_NAME in use: Program received signal SIGSEGV, Segmentation fault. 0x000000000067da2a in extract_muldiv_1 (t=0x2b5d06c1af60, c=0x2b5d062ab180, code=MULT_EXPR, wide_type=0x2b5d06282000, strict_overflow_p=0x7fffa488a0f7 "") at /space/rguenther/src/svn/pointer_plus/gcc/fold-const.c:6008 6008 > GET_MODE_SIZE (TYPE_MODE (type))) (gdb) print type $2 = (tree) 0x0 (gdb) call debug_tree (t) <ssa_name 0x2b5d06c1af60 nothrow var <var_decl 0x2b5d06343370 j> def_stmt <ssa_name 0x2b5d06c1a240> version 36 in-free-list> but linear loop transforms are known to be somewhat broken. The problem is linked to the fact that we eliminate old induction variables too early, so we end up with SSA names that were freed in the chrecs. I'm testing a patch fixing this problem. Subject: Bug 33576 Author: spop Date: Wed Oct 3 15:45:10 2007 New Revision: 128986 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=128986 Log: 2007-10-03 Sebastian Pop <sebastian.pop@amd.com> PR tree-optimization/33576 * testsuite/gcc.dg/tree-ssa/pr33576.c: New. * tree-loop-linear.c (linear_transform_loops): Call remove_iv. * lambda.h (lambda_loopnest_to_gcc_loopnest): New parameter. (remove_iv): Declared. * lambda-code.c (remove_iv): Not static. (lambda_loopnest_to_gcc_loopnest): New parameter remove_ivs. Don't remove ivs there, save ivs in the buffer. Added: trunk/gcc/testsuite/gcc.dg/tree-ssa/pr33576.c Modified: trunk/gcc/ChangeLog trunk/gcc/lambda-code.c trunk/gcc/lambda.h trunk/gcc/tree-loop-linear.c Fixed. |