On 11/23/2013 08:47 PM, Jason Merrill wrote:
On 11/23/2013 02:21 PM, Mike Stump wrote:
-      if (SCALAR_FLOAT_MODE_P (mode))
+#if TARGET_SUPPORTS_WIDE_INT == 0
+      if (!SCALAR_FLOAT_MODE_P (mode))
+        {
+          mem_loc_result->dw_loc_oprnd2.val_class
+        = dw_val_class_const_double;
+          mem_loc_result->dw_loc_oprnd2.v.val_double
+        = rtx_to_double_int (rtl);
+        }
+      else
+#endif
         {
           unsigned int length = GET_MODE_SIZE (mode);
           unsigned char *array

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

Jason

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.

kenny

Reply via email to