From 21385db052f28434a7de4dbb5d19c00b6deddc03 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 25 Mar 2011 17:22:00 +0100 Subject: [PATCH] dwarf2out.c (mem_loc_descriptor): Compare mode size instead of bitsize with DWARF2_ADDR_SIZE. * 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. From-SVN: r171464 --- 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.30.2