aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-03-09 19:54:25 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2010-03-09 19:54:25 +0100
commiteb1fcdaa11c571780374065c383708826624f22d (patch)
tree05b3f25ca95fd387712a79e675a76d6f1385d7f0 /gcc
parent69b89883e86e2d346d28c17e64681ff87b1f61cb (diff)
downloadgcc-eb1fcdaa11c571780374065c383708826624f22d.zip
gcc-eb1fcdaa11c571780374065c383708826624f22d.tar.gz
gcc-eb1fcdaa11c571780374065c383708826624f22d.tar.bz2
re PR bootstrap/43299 (Subversion id 157264 breaks powerpc 64-bit bootstraps)
PR debug/43299 * dwarf2out.c (const_ok_for_output_1): Return 1 for UNSPECs. From-SVN: r157317
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/dwarf2out.c16
2 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 105d366..dddf990 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,6 +1,9 @@
2010-03-09 Jakub Jelinek <jakub@redhat.com>
PR debug/43299
+ * dwarf2out.c (const_ok_for_output_1): Return 1 for UNSPECs.
+
+ PR debug/43299
* var-tracking.c (adjust_sets): New function.
(count_with_sets, add_with_sets): Use it.
(get_adjusted_src): New inline function.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 2595119..5aa9df4 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -12826,6 +12826,22 @@ const_ok_for_output_1 (rtx *rtlp, void *data ATTRIBUTE_UNUSED)
{
rtx rtl = *rtlp;
+ if (GET_CODE (rtl) == UNSPEC)
+ {
+ /* If delegitimize_address couldn't do anything with the UNSPEC, assume
+ we can't express it in the debug info. */
+#ifdef ENABLE_CHECKING
+ inform (current_function_decl
+ ? DECL_SOURCE_LOCATION (current_function_decl)
+ : UNKNOWN_LOCATION,
+ "non-delegitimized UNSPEC %d found in variable location",
+ XINT (rtl, 1));
+#endif
+ expansion_failed (NULL_TREE, rtl,
+ "UNSPEC hasn't been delegitimized.\n");
+ return 1;
+ }
+
if (GET_CODE (rtl) != SYMBOL_REF)
return 0;