public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717)
@ 2009-10-15 23:30 Jakub Jelinek
  2009-10-16  8:48 ` [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717, take 2) Jakub Jelinek
  2009-10-16  9:54 ` [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717) Richard Guenther
  0 siblings, 2 replies; 4+ messages in thread
From: Jakub Jelinek @ 2009-10-15 23:30 UTC (permalink / raw)
  To: gcc-patches

Hi!

CONJ_EXPR wasn't handled by expand_debug_expr, this patch handles at least
the easy cases.

Also, I've noticed that through a SUBREG with outer mode MODE_INT and inner
mode e.g. floating mem_loc_descriptor could try to represent e.g. floating
point multiplication via DW_OP_mul (integer operation) etc.  And, the code
is prepared to handle only lowpart subregs, not arbitrary ones.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2009-10-15  Jakub Jelinek  <jakub@redhat.com>

	PR debug/41717
	* cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
	* dwarf2out.c (mem_loc_descriptor): Don't handle
	POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
	punt if it is not lowpart subreg or if inner mode isn't
	MODE_INT.

	* gcc.dg/debug/pr41717.c: New test.

--- gcc/cfgexpand.c.jj	2009-10-15 22:07:43.000000000 +0200
+++ gcc/cfgexpand.c	2009-10-15 23:14:21.000000000 +0200
@@ -2869,6 +2869,21 @@ expand_debug_expr (tree exp)
 	op1 = gen_rtx_CONST (GET_MODE_INNER (mode), op1);
       return gen_rtx_CONCAT (mode, op0, op1);
 
+    case CONJ_EXPR:
+      if (GET_CODE (op0) == CONCAT)
+	return gen_rtx_CONCAT (mode, XEXP (op0, 0),
+			       gen_rtx_NEG (GET_MODE_INNER (mode),
+					    XEXP (op0, 1)));
+      if (MEM_P (op0))
+	{
+	  enum machine_mode imode = GET_MODE_INNER (mode);
+	  rtx re = adjust_address_nv (op0, imode, 0);
+	  rtx im = adjust_address_nv (op0, imode, GET_MODE_SIZE (imode));
+	  im = gen_rtx_NEG (imode, im);
+	  return gen_rtx_CONCAT (mode, re, im);
+	}
+      return NULL;
+
     case ADDR_EXPR:
       op0 = expand_debug_expr (TREE_OPERAND (exp, 0));
       if (!op0 || !MEM_P (op0))
--- gcc/dwarf2out.c.jj	2009-10-15 22:07:43.000000000 +0200
+++ gcc/dwarf2out.c	2009-10-15 23:14:21.000000000 +0200
@@ -12894,10 +12894,7 @@ mem_loc_descriptor (rtx rtl, enum machin
     case POST_INC:
     case POST_DEC:
     case POST_MODIFY:
-      /* POST_INC and POST_DEC can be handled just like a SUBREG.  So we
-	 just fall into the SUBREG code.  */
-
-      /* ... fall through ...  */
+      return mem_loc_descriptor (XEXP (rtl, 0), mode, initialized);
 
     case SUBREG:
       /* The case of a subreg may arise when we have a local (register)
@@ -12905,9 +12902,13 @@ mem_loc_descriptor (rtx rtl, enum machin
 	 up an entire register.  For now, just assume that it is
 	 legitimate to make the Dwarf info refer to the whole register which
 	 contains the given subreg.  */
-      rtl = XEXP (rtl, 0);
+      if (!subreg_lowpart_p (rtl))
+	break;
+      rtl = SUBREG_REG (rtl);
       if (GET_MODE_SIZE (GET_MODE (rtl)) > DWARF2_ADDR_SIZE)
 	break;
+      if (GET_MODE_CLASS (GET_MODE (rtl)) != MODE_INT)
+	break;
       mem_loc_result = mem_loc_descriptor (rtl, mode, initialized);
       break;
 
--- gcc/testsuite/gcc.dg/debug/pr41717.c.jj	2009-10-15 23:13:24.000000000 +0200
+++ gcc/testsuite/gcc.dg/debug/pr41717.c	2009-10-15 23:12:52.000000000 +0200
@@ -0,0 +1,10 @@
+/* PR debug/41717 */
+/* { dg-do compile } */
+
+void
+foo (void)
+{
+  _Complex float v[1], w;
+  v[1] = 0.0f + 0.8fi;
+  w = __builtin_conjf (v[1] * v[1]);
+}

	Jakub

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717,  take 2)
  2009-10-15 23:30 [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717) Jakub Jelinek
@ 2009-10-16  8:48 ` Jakub Jelinek
  2009-10-16 10:06   ` Richard Guenther
  2009-10-16  9:54 ` [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717) Richard Guenther
  1 sibling, 1 reply; 4+ messages in thread
From: Jakub Jelinek @ 2009-10-16  8:48 UTC (permalink / raw)
  To: gcc-patches

On Fri, Oct 16, 2009 at 01:23:58AM +0200, Jakub Jelinek wrote:
> CONJ_EXPR wasn't handled by expand_debug_expr, this patch handles at least
> the easy cases.

Actually, it is not hard to handle even the rest of cases using
ZERO_EXTRACT.
And, while looking at how dwarf2out.c handles ZERO_EXTRACT I've noticed that
it could avoid doing shifts by 0.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2009-10-16  Jakub Jelinek  <jakub@redhat.com>

	PR debug/41717
	* cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
	* dwarf2out.c (mem_loc_descriptor): Don't handle
	POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
	punt if it is not lowpart subreg or if inner mode isn't
	MODE_INT.  Avoid shifts with count zero in
	ZERO_EXTRACT/SIGN_EXTRACT expansion.

	* gcc.dg/debug/pr41717.c: New test.

--- gcc/cfgexpand.c	2009-10-15 23:14:21.000000000 +0200
+++ gcc/cfgexpand.c	2009-10-16 01:45:11.000000000 +0200
@@ -2869,6 +2869,46 @@
 	op1 = gen_rtx_CONST (GET_MODE_INNER (mode), op1);
       return gen_rtx_CONCAT (mode, op0, op1);
 
+    case CONJ_EXPR:
+      if (GET_CODE (op0) == CONCAT)
+	return gen_rtx_CONCAT (mode, XEXP (op0, 0),
+			       gen_rtx_NEG (GET_MODE_INNER (mode),
+					    XEXP (op0, 1)));
+      else
+	{
+	  enum machine_mode imode = GET_MODE_INNER (mode);
+	  rtx re, im;
+
+	  if (MEM_P (op0))
+	    {
+	      re = adjust_address_nv (op0, imode, 0);
+	      im = adjust_address_nv (op0, imode, GET_MODE_SIZE (imode));
+	    }
+	  else
+	    {
+	      enum machine_mode ifmode = int_mode_for_mode (mode);
+	      enum machine_mode ihmode = int_mode_for_mode (imode);
+	      rtx halfsize;
+	      if (ifmode == BLKmode || ihmode == BLKmode)
+		return NULL;
+	      halfsize = GEN_INT (GET_MODE_BITSIZE (ihmode));
+	      re = op0;
+	      if (mode != ifmode)
+		re = gen_rtx_SUBREG (ifmode, re, 0);
+	      re = gen_rtx_ZERO_EXTRACT (ihmode, re, halfsize, const0_rtx);
+	      if (imode != ihmode)
+		re = gen_rtx_SUBREG (imode, re, 0);
+	      im = copy_rtx (op0);
+	      if (mode != ifmode)
+		im = gen_rtx_SUBREG (ifmode, im, 0);
+	      im = gen_rtx_ZERO_EXTRACT (ihmode, im, halfsize, halfsize);
+	      if (imode != ihmode)
+		im = gen_rtx_SUBREG (imode, im, 0);
+	    }
+	  im = gen_rtx_NEG (imode, im);
+	  return gen_rtx_CONCAT (mode, re, im);
+	}
+
     case ADDR_EXPR:
       op0 = expand_debug_expr (TREE_OPERAND (exp, 0));
       if (!op0 || !MEM_P (op0))
--- gcc/dwarf2out.c	2009-10-15 23:14:21.000000000 +0200
+++ gcc/dwarf2out.c	2009-10-16 01:51:02.000000000 +0200
@@ -12894,10 +12894,7 @@
     case POST_INC:
     case POST_DEC:
     case POST_MODIFY:
-      /* POST_INC and POST_DEC can be handled just like a SUBREG.  So we
-	 just fall into the SUBREG code.  */
-
-      /* ... fall through ...  */
+      return mem_loc_descriptor (XEXP (rtl, 0), mode, initialized);
 
     case SUBREG:
       /* The case of a subreg may arise when we have a local (register)
@@ -12905,9 +12902,13 @@
 	 up an entire register.  For now, just assume that it is
 	 legitimate to make the Dwarf info refer to the whole register which
 	 contains the given subreg.  */
-      rtl = XEXP (rtl, 0);
+      if (!subreg_lowpart_p (rtl))
+	break;
+      rtl = SUBREG_REG (rtl);
       if (GET_MODE_SIZE (GET_MODE (rtl)) > DWARF2_ADDR_SIZE)
 	break;
+      if (GET_MODE_CLASS (GET_MODE (rtl)) != MODE_INT)
+	break;
       mem_loc_result = mem_loc_descriptor (rtl, mode, initialized);
       break;
 
@@ -13392,12 +13393,19 @@
 	  if (BITS_BIG_ENDIAN)
 	    shift = GET_MODE_BITSIZE (GET_MODE (XEXP (rtl, 0)))
 		    - shift - size;
-	  add_loc_descr (&mem_loc_result,
-			 int_loc_descriptor (DWARF2_ADDR_SIZE - shift - size));
-	  add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_shl, 0, 0));
-	  add_loc_descr (&mem_loc_result,
-			 int_loc_descriptor (DWARF2_ADDR_SIZE - size));
-	  add_loc_descr (&mem_loc_result, new_loc_descr (op, 0, 0));
+	  if (shift + size != DWARF2_ADDR_SIZE)
+	    {
+	      add_loc_descr (&mem_loc_result,
+			     int_loc_descriptor (DWARF2_ADDR_SIZE
+						 - shift - size));
+	      add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_shl, 0, 0));
+	    }
+	  if (size != DWARF2_ADDR_SIZE)
+	    {
+	      add_loc_descr (&mem_loc_result,
+			     int_loc_descriptor (DWARF2_ADDR_SIZE - size));
+	      add_loc_descr (&mem_loc_result, new_loc_descr (op, 0, 0));
+	    }
 	}
       break;
 
--- gcc/testsuite/gcc.dg/debug/pr41717.c.jj	2009-10-15 23:13:24.000000000 +0200
+++ gcc/testsuite/gcc.dg/debug/pr41717.c	2009-10-15 23:12:52.000000000 +0200
@@ -0,0 +1,10 @@
+/* PR debug/41717 */
+/* { dg-do compile } */
+
+void
+foo (void)
+{
+  _Complex float v[1], w;
+  v[1] = 0.0f + 0.8fi;
+  w = __builtin_conjf (v[1] * v[1]);
+}

	Jakub

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR   debug/41717)
  2009-10-15 23:30 [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717) Jakub Jelinek
  2009-10-16  8:48 ` [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717, take 2) Jakub Jelinek
@ 2009-10-16  9:54 ` Richard Guenther
  1 sibling, 0 replies; 4+ messages in thread
From: Richard Guenther @ 2009-10-16  9:54 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: gcc-patches

On Fri, Oct 16, 2009 at 1:23 AM, Jakub Jelinek <jakub@redhat.com> wrote:
> Hi!
>
> CONJ_EXPR wasn't handled by expand_debug_expr, this patch handles at least
> the easy cases.
>
> Also, I've noticed that through a SUBREG with outer mode MODE_INT and inner
> mode e.g. floating mem_loc_descriptor could try to represent e.g. floating
> point multiplication via DW_OP_mul (integer operation) etc.  And, the code
> is prepared to handle only lowpart subregs, not arbitrary ones.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

Ok.

Thanks,
Richard.

> 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
>
>        PR debug/41717
>        * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
>        * dwarf2out.c (mem_loc_descriptor): Don't handle
>        POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
>        punt if it is not lowpart subreg or if inner mode isn't
>        MODE_INT.
>
>        * gcc.dg/debug/pr41717.c: New test.
>
> --- gcc/cfgexpand.c.jj  2009-10-15 22:07:43.000000000 +0200
> +++ gcc/cfgexpand.c     2009-10-15 23:14:21.000000000 +0200
> @@ -2869,6 +2869,21 @@ expand_debug_expr (tree exp)
>        op1 = gen_rtx_CONST (GET_MODE_INNER (mode), op1);
>       return gen_rtx_CONCAT (mode, op0, op1);
>
> +    case CONJ_EXPR:
> +      if (GET_CODE (op0) == CONCAT)
> +       return gen_rtx_CONCAT (mode, XEXP (op0, 0),
> +                              gen_rtx_NEG (GET_MODE_INNER (mode),
> +                                           XEXP (op0, 1)));
> +      if (MEM_P (op0))
> +       {
> +         enum machine_mode imode = GET_MODE_INNER (mode);
> +         rtx re = adjust_address_nv (op0, imode, 0);
> +         rtx im = adjust_address_nv (op0, imode, GET_MODE_SIZE (imode));
> +         im = gen_rtx_NEG (imode, im);
> +         return gen_rtx_CONCAT (mode, re, im);
> +       }
> +      return NULL;
> +
>     case ADDR_EXPR:
>       op0 = expand_debug_expr (TREE_OPERAND (exp, 0));
>       if (!op0 || !MEM_P (op0))
> --- gcc/dwarf2out.c.jj  2009-10-15 22:07:43.000000000 +0200
> +++ gcc/dwarf2out.c     2009-10-15 23:14:21.000000000 +0200
> @@ -12894,10 +12894,7 @@ mem_loc_descriptor (rtx rtl, enum machin
>     case POST_INC:
>     case POST_DEC:
>     case POST_MODIFY:
> -      /* POST_INC and POST_DEC can be handled just like a SUBREG.  So we
> -        just fall into the SUBREG code.  */
> -
> -      /* ... fall through ...  */
> +      return mem_loc_descriptor (XEXP (rtl, 0), mode, initialized);
>
>     case SUBREG:
>       /* The case of a subreg may arise when we have a local (register)
> @@ -12905,9 +12902,13 @@ mem_loc_descriptor (rtx rtl, enum machin
>         up an entire register.  For now, just assume that it is
>         legitimate to make the Dwarf info refer to the whole register which
>         contains the given subreg.  */
> -      rtl = XEXP (rtl, 0);
> +      if (!subreg_lowpart_p (rtl))
> +       break;
> +      rtl = SUBREG_REG (rtl);
>       if (GET_MODE_SIZE (GET_MODE (rtl)) > DWARF2_ADDR_SIZE)
>        break;
> +      if (GET_MODE_CLASS (GET_MODE (rtl)) != MODE_INT)
> +       break;
>       mem_loc_result = mem_loc_descriptor (rtl, mode, initialized);
>       break;
>
> --- gcc/testsuite/gcc.dg/debug/pr41717.c.jj     2009-10-15 23:13:24.000000000 +0200
> +++ gcc/testsuite/gcc.dg/debug/pr41717.c        2009-10-15 23:12:52.000000000 +0200
> @@ -0,0 +1,10 @@
> +/* PR debug/41717 */
> +/* { dg-do compile } */
> +
> +void
> +foo (void)
> +{
> +  _Complex float v[1], w;
> +  v[1] = 0.0f + 0.8fi;
> +  w = __builtin_conjf (v[1] * v[1]);
> +}
>
>        Jakub
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR   debug/41717, take 2)
  2009-10-16  8:48 ` [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717, take 2) Jakub Jelinek
@ 2009-10-16 10:06   ` Richard Guenther
  0 siblings, 0 replies; 4+ messages in thread
From: Richard Guenther @ 2009-10-16 10:06 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: gcc-patches

On Fri, Oct 16, 2009 at 10:33 AM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Fri, Oct 16, 2009 at 01:23:58AM +0200, Jakub Jelinek wrote:
>> CONJ_EXPR wasn't handled by expand_debug_expr, this patch handles at least
>> the easy cases.
>
> Actually, it is not hard to handle even the rest of cases using
> ZERO_EXTRACT.
> And, while looking at how dwarf2out.c handles ZERO_EXTRACT I've noticed that
> it could avoid doing shifts by 0.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

Ok.

Thanks,
Richard.

> 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
>
>        PR debug/41717
>        * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
>        * dwarf2out.c (mem_loc_descriptor): Don't handle
>        POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
>        punt if it is not lowpart subreg or if inner mode isn't
>        MODE_INT.  Avoid shifts with count zero in
>        ZERO_EXTRACT/SIGN_EXTRACT expansion.
>
>        * gcc.dg/debug/pr41717.c: New test.
>
> --- gcc/cfgexpand.c     2009-10-15 23:14:21.000000000 +0200
> +++ gcc/cfgexpand.c     2009-10-16 01:45:11.000000000 +0200
> @@ -2869,6 +2869,46 @@
>        op1 = gen_rtx_CONST (GET_MODE_INNER (mode), op1);
>       return gen_rtx_CONCAT (mode, op0, op1);
>
> +    case CONJ_EXPR:
> +      if (GET_CODE (op0) == CONCAT)
> +       return gen_rtx_CONCAT (mode, XEXP (op0, 0),
> +                              gen_rtx_NEG (GET_MODE_INNER (mode),
> +                                           XEXP (op0, 1)));
> +      else
> +       {
> +         enum machine_mode imode = GET_MODE_INNER (mode);
> +         rtx re, im;
> +
> +         if (MEM_P (op0))
> +           {
> +             re = adjust_address_nv (op0, imode, 0);
> +             im = adjust_address_nv (op0, imode, GET_MODE_SIZE (imode));
> +           }
> +         else
> +           {
> +             enum machine_mode ifmode = int_mode_for_mode (mode);
> +             enum machine_mode ihmode = int_mode_for_mode (imode);
> +             rtx halfsize;
> +             if (ifmode == BLKmode || ihmode == BLKmode)
> +               return NULL;
> +             halfsize = GEN_INT (GET_MODE_BITSIZE (ihmode));
> +             re = op0;
> +             if (mode != ifmode)
> +               re = gen_rtx_SUBREG (ifmode, re, 0);
> +             re = gen_rtx_ZERO_EXTRACT (ihmode, re, halfsize, const0_rtx);
> +             if (imode != ihmode)
> +               re = gen_rtx_SUBREG (imode, re, 0);
> +             im = copy_rtx (op0);
> +             if (mode != ifmode)
> +               im = gen_rtx_SUBREG (ifmode, im, 0);
> +             im = gen_rtx_ZERO_EXTRACT (ihmode, im, halfsize, halfsize);
> +             if (imode != ihmode)
> +               im = gen_rtx_SUBREG (imode, im, 0);
> +           }
> +         im = gen_rtx_NEG (imode, im);
> +         return gen_rtx_CONCAT (mode, re, im);
> +       }
> +
>     case ADDR_EXPR:
>       op0 = expand_debug_expr (TREE_OPERAND (exp, 0));
>       if (!op0 || !MEM_P (op0))
> --- gcc/dwarf2out.c     2009-10-15 23:14:21.000000000 +0200
> +++ gcc/dwarf2out.c     2009-10-16 01:51:02.000000000 +0200
> @@ -12894,10 +12894,7 @@
>     case POST_INC:
>     case POST_DEC:
>     case POST_MODIFY:
> -      /* POST_INC and POST_DEC can be handled just like a SUBREG.  So we
> -        just fall into the SUBREG code.  */
> -
> -      /* ... fall through ...  */
> +      return mem_loc_descriptor (XEXP (rtl, 0), mode, initialized);
>
>     case SUBREG:
>       /* The case of a subreg may arise when we have a local (register)
> @@ -12905,9 +12902,13 @@
>         up an entire register.  For now, just assume that it is
>         legitimate to make the Dwarf info refer to the whole register which
>         contains the given subreg.  */
> -      rtl = XEXP (rtl, 0);
> +      if (!subreg_lowpart_p (rtl))
> +       break;
> +      rtl = SUBREG_REG (rtl);
>       if (GET_MODE_SIZE (GET_MODE (rtl)) > DWARF2_ADDR_SIZE)
>        break;
> +      if (GET_MODE_CLASS (GET_MODE (rtl)) != MODE_INT)
> +       break;
>       mem_loc_result = mem_loc_descriptor (rtl, mode, initialized);
>       break;
>
> @@ -13392,12 +13393,19 @@
>          if (BITS_BIG_ENDIAN)
>            shift = GET_MODE_BITSIZE (GET_MODE (XEXP (rtl, 0)))
>                    - shift - size;
> -         add_loc_descr (&mem_loc_result,
> -                        int_loc_descriptor (DWARF2_ADDR_SIZE - shift - size));
> -         add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_shl, 0, 0));
> -         add_loc_descr (&mem_loc_result,
> -                        int_loc_descriptor (DWARF2_ADDR_SIZE - size));
> -         add_loc_descr (&mem_loc_result, new_loc_descr (op, 0, 0));
> +         if (shift + size != DWARF2_ADDR_SIZE)
> +           {
> +             add_loc_descr (&mem_loc_result,
> +                            int_loc_descriptor (DWARF2_ADDR_SIZE
> +                                                - shift - size));
> +             add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_shl, 0, 0));
> +           }
> +         if (size != DWARF2_ADDR_SIZE)
> +           {
> +             add_loc_descr (&mem_loc_result,
> +                            int_loc_descriptor (DWARF2_ADDR_SIZE - size));
> +             add_loc_descr (&mem_loc_result, new_loc_descr (op, 0, 0));
> +           }
>        }
>       break;
>
> --- gcc/testsuite/gcc.dg/debug/pr41717.c.jj     2009-10-15 23:13:24.000000000 +0200
> +++ gcc/testsuite/gcc.dg/debug/pr41717.c        2009-10-15 23:12:52.000000000 +0200
> @@ -0,0 +1,10 @@
> +/* PR debug/41717 */
> +/* { dg-do compile } */
> +
> +void
> +foo (void)
> +{
> +  _Complex float v[1], w;
> +  v[1] = 0.0f + 0.8fi;
> +  w = __builtin_conjf (v[1] * v[1]);
> +}
>
>        Jakub
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-10-16  9:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-10-15 23:30 [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717) Jakub Jelinek
2009-10-16  8:48 ` [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717, take 2) Jakub Jelinek
2009-10-16 10:06   ` Richard Guenther
2009-10-16  9:54 ` [PATCH] Fix ICE in expand_debug_expr on CONJ_EXPR (PR debug/41717) Richard Guenther

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).