This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, rtl-optimization]: Fix PR37997: ICE shifting byte to the right with constant > 7FFFFFFF
- From: Eric Botcazou <ebotcazou at adacore dot com>
- To: Uros Bizjak <ubizjak at gmail dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 8 Sep 2009 20:05:55 +0200
- Subject: Re: [PATCH, rtl-optimization]: Fix PR37997: ICE shifting byte to the right with constant > 7FFFFFFF
- References: <4AA6785A.80805@gmail.com>
> By returning early, we miss conversion of VOIDmode const_ints. In
> attached test, we request QImode conversion of a big constant, and since
> OLDmode equals mode, we return the same RTL from convert_modes,
> resulting in:
>
> pr39779.c:8: error: unrecognizable insn:
> (insn 7 6 8 3 pr39779.c:6 (set (reg:QI 61)
> (const_int -557921043 [0xffffffffdebecced])) -1 (nil))
> pr39779.c:8: internal compiler error: in extract_insn, at recog.c:2048
Then why old_mode is QImode if the constant is not valid for QImode?
> 2009-09-08 Uros Bizjak <ubizjak@gmail.com>
>
> PR rtl-optimization/39779
> * simplify-rtx.c (convert_modes): Return when mode == oldmode after
> CONST_INTs are processed.
expr.c.
--
Eric Botcazou