From ed0d805ade476b6cada7b87820b349061b78d445 Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 25 Mar 2011 16:22:00 +0000 Subject: [PATCH] * dwarf2out.c (mem_loc_descriptor) : Compare mode size instead of bitsize with DWARF2_ADDR_SIZE. (hash_loc_operands, compare_loc_operands): Handle DW_OP_GNU_entry_value. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171464 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/dwarf2out.c | 9 +++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 827a6628905..62299ae1a02 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-03-25 Jakub Jelinek + + * dwarf2out.c (mem_loc_descriptor) : Compare + mode size instead of bitsize with DWARF2_ADDR_SIZE. + (hash_loc_operands, compare_loc_operands): Handle + DW_OP_GNU_entry_value. + 2011-03-25 Kai Tietz * config/i386/cygming.h (DWARF_FRAME_REGISTERS): Adjust comment. diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index e57b9a1a0ea..77d533eb8fb 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -14314,8 +14314,8 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode, && ((unsigned) INTVAL (XEXP (rtl, 1)) + (unsigned) INTVAL (XEXP (rtl, 2)) <= GET_MODE_BITSIZE (GET_MODE (rtl))) - && GET_MODE_BITSIZE (GET_MODE (rtl)) <= DWARF2_ADDR_SIZE - && GET_MODE_BITSIZE (GET_MODE (XEXP (rtl, 0))) <= DWARF2_ADDR_SIZE) + && GET_MODE_SIZE (GET_MODE (rtl)) <= DWARF2_ADDR_SIZE + && GET_MODE_SIZE (GET_MODE (XEXP (rtl, 0))) <= DWARF2_ADDR_SIZE) { int shift, size; op0 = mem_loc_descriptor (XEXP (rtl, 0), mode, @@ -23128,6 +23128,9 @@ hash_loc_operands (dw_loc_descr_ref loc, hashval_t hash) case DW_OP_GNU_implicit_pointer: hash = iterative_hash_object (val2->v.val_int, hash); break; + case DW_OP_GNU_entry_value: + hash = hash_loc_operands (val1->v.val_loc, hash); + break; default: /* Other codes have no operands. */ @@ -23285,6 +23288,8 @@ compare_loc_operands (dw_loc_descr_ref x, dw_loc_descr_ref y) && valx1->val_class == valy1->val_class && valx1->v.val_die_ref.die == valy1->v.val_die_ref.die && valx2->v.val_int == valy2->v.val_int; + case DW_OP_GNU_entry_value: + return compare_loc_operands (valx1->v.val_loc, valy1->v.val_loc); default: /* Other codes have no operands. */ return true; -- 2.11.4.GIT