This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/34808] [4.3 Regression] ICE in prescan_insns_for_dce



------- Comment #3 from kkojima at gcc dot gnu dot org  2008-01-18 12:50 -------
It looks the testcase segfaults because of a bad REG_LIBCALL note.
The problematic part of .166r.split1 rtl dump looks like:

(insn:HI 100 103 179 15 xxx.c:74 (set (subreg:SI (reg:DI 198 [ regno ]) 0)
        (reg/v:SI 159 [ regno ])) 172 {movsi_ie} (insn_list:REG_LIBCALL 104
(expr_list:REG_NO_CONFLICT (reg/v:SI 159 [ regno ])
            (nil))))

(insn 179 100 180 15 xxx.c:74 (parallel [
            (set (subreg:SI (reg:DI 198 [ regno ]) 4)
                (ashift:SI (reg/v:SI 159 [ regno ])
                    (const_int 1 [0x1])))
            (set (reg:SI 147 t)
                (lt:SI (reg/v:SI 159 [ regno ])
                    (const_int 0 [0x0])))
        ]) -1 (nil))

(insn 180 179 106 15 xxx.c:74 (set (subreg:SI (reg:DI 198 [ regno ]) 4)
        (neg:SI (reg:SI 147 t))) -1 (nil))

but the insn 104 doesn't exist in this dump.
The corresponding .165r.regmove dump is

(insn:HI 100 103 104 15 xxx.c:74 (set (subreg:SI (reg:DI 198 [ regno ]) 0)
        (reg/v:SI 159 [ regno ])) 172 {movsi_ie} (insn_list:REG_LIBCALL 104
(expr_list:REG_NO_CONFLICT (reg/v:SI 159 [ regno ])
            (nil))))

(insn:HI 104 100 106 15 xxx.c:74 (parallel [
            (set (subreg:SI (reg:DI 198 [ regno ]) 4)
                (ashiftrt:SI (reg/v:SI 159 [ regno ])
                    (const_int 31 [0x1f])))
            (clobber (reg:SI 147 t))
        ]) 112 {ashrsi2_31} (expr_list:REG_DEAD (reg/v:SI 159 [ regno ])
        (expr_list:REG_UNUSED (reg:SI 147 t)
            (insn_list:REG_RETVAL 100 (expr_list:REG_NO_CONFLICT (reg/v:SI 159
[ regno ])
                    (nil))))))

and it seems that the above insn 104 is splitted to insn 179 and 180
but try_split doesn't handle REG_RETVAL notes at all.


-- 

kkojima at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kkojima at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2008-01-18 12:50:22
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34808


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]