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))