dwarf2out.c (mem_loc_descriptor): Do not pass constant pool contents for a SYMBOL_REF...
authorToon Moene <toon@moene.indiv.nluug.nl>
Thu, 10 May 2001 18:52:28 +0000 (20:52 +0200)
committerToon Moene <toon@gcc.gnu.org>
Thu, 10 May 2001 18:52:28 +0000 (18:52 +0000)
2001-05-10  Toon Moene  <toon@moene.indiv.nluug.nl>

* dwarf2out.c (mem_loc_descriptor): Do not pass constant pool
contents for a SYMBOL_REF in case of floating point constants.

From-SVN: r41945

gcc/ChangeLog
gcc/dwarf2out.c

index 11bf8a5ad82e5ab251cdda2e7f17f8b9ba1fe613..1553e0117cbf21a0e08ded96e832c0acf2c25ea8 100644 (file)
@@ -1,3 +1,8 @@
+2001-05-10  Toon Moene  <toon@moene.indiv.nluug.nl>
+
+       * dwarf2out.c (mem_loc_descriptor): Do not pass constant pool
+       contents for a SYMBOL_REF in case of floating point constants.
+
 2001-05-10  DJ Delorie  <dj@redhat.com>
 
        * c-common.c (combine_strings): Widen strings in a
index b709d07ee075ddc79af59ca46b0e30e89c2d7c99..5952936951c1edcebf2fa8daf9fb198a436e4df3 100644 (file)
@@ -7120,8 +7120,14 @@ mem_loc_descriptor (rtl, mode)
       /* Alternatively, the symbol in the constant pool can be referenced
         by a different symbol.  */
       if (GET_CODE (rtl) == SYMBOL_REF
-         && CONSTANT_POOL_ADDRESS_P (rtl))
-         rtl = get_pool_constant (rtl);
+         && CONSTANT_POOL_ADDRESS_P (rtl))
+       {
+         rtx tmp = get_pool_constant (rtl);
+         /* Doesn't work for floating point constants.  */
+         if (! (GET_CODE (tmp) == CONST_DOUBLE && GET_MODE (tmp) != VOIDmode))
+           rtl = tmp;
+       }
+
 
       mem_loc_result = new_loc_descr (DW_OP_addr, 0, 0);
       mem_loc_result->dw_loc_oprnd1.val_class = dw_val_class_addr;