From dfc1ac47bbae1a36bde18fab5ba7a896406aa698 Mon Sep 17 00:00:00 2001 From: toon Date: Thu, 10 May 2001 18:52:28 +0000 Subject: [PATCH] 2001-05-10 Toon Moene * dwarf2out.c (mem_loc_descriptor): Do not pass constant pool contents for a SYMBOL_REF in case of floating point constants. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41945 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/dwarf2out.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 11bf8a5..1553e01 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-05-10 Toon Moene + + * 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 * c-common.c (combine_strings): Widen strings in a diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index b709d07..5952936 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -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; -- 2.7.4