This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/34808] [4.3 Regression] ICE in prescan_insns_for_dce
- From: "kkojima at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 18 Jan 2008 12:50:22 -0000
- Subject: [Bug rtl-optimization/34808] [4.3 Regression] ICE in prescan_insns_for_dce
- References: <bug-34808-11811@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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