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