aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2009-09-23 09:02:26 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2009-09-23 09:02:26 +0200
commit457ff6a1d01865e2134912402a674d30ec898d76 (patch)
tree7c1c92cf055d5b06f15fc709e254177e2a35518f
parentbe12343976ff4b516eb80c983d9ad613ff9a2593 (diff)
downloadgcc-457ff6a1d01865e2134912402a674d30ec898d76.zip
gcc-457ff6a1d01865e2134912402a674d30ec898d76.tar.gz
gcc-457ff6a1d01865e2134912402a674d30ec898d76.tar.bz2
re PR debug/41411 (ICE: mem_loc_descriptor, at dwarf2out.c:11616)
* dwarf2out.c (loc_list_plus_const): Only define if DWARF2_DEBUGGING_INFO. (address_of_int_loc_descriptor): Likewise. PR debug/41411 * dwarf2out.c (mem_loc_descriptor): Handle HIGH. From-SVN: r152059
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/dwarf2out.c8
2 files changed, 16 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4ee5b37..ccab5ac 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,14 @@
-2009-09-23 Uros Bizjak <ubizjak@gmail.com>
+2009-09-23 Jakub Jelinek <jakub@redhat.com>
+ Jan Hubicka <jh@suse.cz>
+
+ * dwarf2out.c (loc_list_plus_const): Only define if
+ DWARF2_DEBUGGING_INFO.
+ (address_of_int_loc_descriptor): Likewise.
+
+ PR debug/41411
+ * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
+
+2009-09-23 Uros Bizjak <ubizjak@gmail.com>
PR c/39779
* c-typeck.c (build_binary_op) <short_shift>: Check that integer
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index f25b18b..a2e91d4 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -4657,6 +4657,7 @@ loc_descr_plus_const (dw_loc_descr_ref *list_head, HOST_WIDE_INT offset)
}
}
+#ifdef DWARF2_DEBUGGING_INFO
/* Add a constant OFFSET to a location list. */
static void
@@ -4666,6 +4667,7 @@ loc_list_plus_const (dw_loc_list_ref list_head, HOST_WIDE_INT offset)
for (d = list_head; d != NULL; d = d->dw_loc_next)
loc_descr_plus_const (&d->expr, offset);
}
+#endif
/* Return the size of a location descriptor. */
@@ -10896,7 +10898,9 @@ int_loc_descriptor (HOST_WIDE_INT i)
return new_loc_descr (op, i, 0);
}
+#endif
+#ifdef DWARF2_DEBUGGING_INFO
/* Return loc description representing "address" of integer value.
This can appear only as toplevel expression. */
@@ -10957,9 +10961,6 @@ address_of_int_loc_descriptor (int size, HOST_WIDE_INT i)
loc_result->dw_loc_oprnd2.v.val_int = i;
return loc_result;
}
-#endif
-
-#ifdef DWARF2_DEBUGGING_INFO
/* Return a location descriptor that designates a base+offset location. */
@@ -11675,6 +11676,7 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
case PARITY:
case ASM_OPERANDS:
case UNSPEC:
+ case HIGH:
/* If delegitimize_address couldn't do anything with the UNSPEC, we
can't express it in the debug info. This can happen e.g. with some
TLS UNSPECs. */