aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2011-05-09 18:16:04 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2011-05-09 11:16:04 -0700
commit805d6a7592f18617e4dda5f839dfd02618aaf779 (patch)
treeb9630ad1d341a27bcf886b22f19d987b3193c383
parent14d0f7d2446c94b317ccbb2bf76afcf71b46a5ee (diff)
downloadgcc-805d6a7592f18617e4dda5f839dfd02618aaf779.zip
gcc-805d6a7592f18617e4dda5f839dfd02618aaf779.tar.gz
gcc-805d6a7592f18617e4dda5f839dfd02618aaf779.tar.bz2
One more POINTERS_EXTEND_UNSIGNED fix in mem_loc_descriptor.
2011-05-09 H.J. Lu <hongjiu.lu@intel.com> PR debug/48853 * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: If POINTERS_EXTEND_UNSIGNED is defined, don't give up if mode is Pmode and mem_mode is not VOIDmode. From-SVN: r173587
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/dwarf2out.c6
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6406136..bf217bd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2011-05-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR debug/48853
+ * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: If
+ POINTERS_EXTEND_UNSIGNED is defined, don't give up if mode is
+ Pmode and mem_mode is not VOIDmode.
+
2011-05-08 Ville Voutilainen <ville.voutilainen@gmail.com>
* tree.h (TYPE_UNQUALIFIED, TYPE_QUAL_CONST): Convert to enum.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index c08f5aa..b85a55e 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -13880,7 +13880,11 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
break;
if (GET_MODE_CLASS (mode) == MODE_INT
&& GET_MODE_CLASS (GET_MODE (SUBREG_REG (rtl))) == MODE_INT
- && GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE
+ && (GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE
+#ifdef POINTERS_EXTEND_UNSIGNED
+ || (mode == Pmode && mem_mode != VOIDmode)
+#endif
+ )
&& GET_MODE_SIZE (GET_MODE (SUBREG_REG (rtl))) <= DWARF2_ADDR_SIZE)
{
mem_loc_result = mem_loc_descriptor (SUBREG_REG (rtl),