I replied to the wrong email when i sent the first version of this emal. sorry. This was the comment that was addressed by this fix.

fixed on the wide-int branch 205363.



On 11/24/2013 08:43 AM, Jason Merrill wrote:
On 11/23/2013 09:55 PM, Kenneth Zadeck wrote:
On 11/23/2013 08:47 PM, Jason Merrill wrote:

So if the target supports wide ints you'll always use the scalar float
code?  Why does that do the right thing?

if TARGET_SUPPORTS_WIDE_INT != 0, then integers are NEVER placed in
const-doubles.  large integers go into CONST_WIDE_INTS  so this case
always represents a floating point constant and nothing else. So yes.

I think that you could argue that the comment above this frag needs to
be rewritten because it is wrong if TARGET_SUPPORTS_WIDE_INT != 0.

Please.  OK with that change.

Jason



Index: dwarf2out.c
===================================================================
--- dwarf2out.c	(revision 205360)
+++ dwarf2out.c	(working copy)
@@ -12880,10 +12880,15 @@ mem_loc_descriptor (rtx rtl, enum machin
 	{
 	  dw_die_ref type_die;
 
-	  /* Note that a CONST_DOUBLE rtx could represent either an integer
-	     or a floating-point constant.  A CONST_DOUBLE is used whenever
-	     the constant requires more than one word in order to be
-	     adequately represented.  We output CONST_DOUBLEs as blocks.  */
+	  /* Note that if TARGET_SUPPORTS_WIDE_INT == 0, a
+	     CONST_DOUBLE rtx could represent either an large integer
+	     or a floating-point constant.  If
+	     TARGET_SUPPORTS_WIDE_INT != 0, the value is always a
+	     floating point constant.
+
+	     When it is an integer, a CONST_DOUBLE is used whenever
+	     the constant requires 2 HWIs to be adequately
+	     represented.  We output CONST_DOUBLEs as blocks.  */
 	  if (mode == VOIDmode
 	      || (GET_MODE (rtl) == VOIDmode
 		  && GET_MODE_BITSIZE (mode) != HOST_BITS_PER_DOUBLE_INT))

Reply via email to