PING^3[PATCH]FIX PR30243 signbit Lowpart ICE on AVR target - need Middle end approval.
Andy H
hutchinsonandy@aim.com
Wed Jun 4 01:46:00 GMT 2008
Ping again as no comment or approval received.
I'd like to get this in to 4.4
Ok?
hutchinsonandy@aim.com wrote:
> PING Maybe this was overlooked as pesky AVR target change.
>
> Is this ok?
>
>
> -------- Original Message --------
> Subject: [PATCH]FIX PR30243 signbit Lowpart ICE on AVR target
> Date: Thu, 15 May 2008 22:51:04 -0400
> From: Andy H <hutchinsonandy@aim.com>
> To: gcc-patches@gcc.gnu.org
> CC: Weddington, Eric <eweddington@cso.atmel.com>, Anatoly Sokolov
> <aesok@post.ru>
>
>
>
> This patch corrects ICE bug with AVR and builtin signbit()
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30243
>
> internal compiler error: in gen_lowpart_general, at rtlhooks.c:51
>
> This occurs because expand_builtin_signbit () uses lowpart on
> intermediate result register that is already smaller than the expected
> "word" mode.
>
> The change skips the lowpart when its already an equal or smaller mode.
>
>
> This patch was originally posted against bug by Anatoly Sokolov and Eric
> Weddington last October and last revised in February.
> Although used as patch on Winavr releases, this was not applied to GCC.
>
> I have bootstrapped and tested this patch for target i686-pc-linux-gnu
> and c language (make check). There were no regressions.
>
> I have bootstrapped and tested this patch for target avr-unknown-none.
> All c tests were run. There were no regressions and 10 test failures
> were removed.
>
> Is this ok to commit to 4.4 HEAD?
>
>
> If ok, to what extend should this be backported? It is marked as
> regression at GCC 4.1+
>
>
>
> 2008-05-15 <hutchinsonandy@aim.com>
>
>
> PR target/30243
> * builtins.c (expand_builtin_signbit): Don't take lowpart when
> register is already smaller or equal to required mode.
>
>
>
>
>
>
>
>
>
>
>
>
> Index: gcc/builtins.c
> ===================================================================
> --- gcc/builtins.c (revision 135235)
> +++ gcc/builtins.c (working copy)
> @@ -5782,7 +5782,7 @@
> lo = 0;
> }
>
> - if (imode != rmode)
> + if (GET_MODE_SIZE (imode) > GET_MODE_SIZE (rmode))
> temp = gen_lowpart (rmode, temp);
> temp = expand_binop (rmode, and_optab, temp,
> immed_double_const (lo, hi, rmode),
>
>
More information about the Gcc-patches
mailing list