This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Slap a band-aid on PR41404 to restore bootstrap pending fuller fix.
- From: Dave Korn <dave dot korn dot cygwin at googlemail dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Sun, 20 Sep 2009 13:10:26 +0100
- Subject: [PATCH] Slap a band-aid on PR41404 to restore bootstrap pending fuller fix.
Hi all,
Following discussion in the audit trail, Honza has a plan to fix the
underlying issue in PR41404, which is a mishandling of const_string RTL when
generating the dwarf for the location tables in mem_loc_descriptor().
That will take a little time to develop and review, so in the meantime this
patch shoves a temporary band-aid on the problem and restores bootstrap by
simply punting to track string values. When Honza's patch arrives it will
implicitly revert this patch by re-adding something correct to replace the
deleted code in the CONST_STRING switch case.
gcc/ChangeLog:
PR bootstrap/41404
* dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
we can handle it correctly.
Fixes the PR's attached testcase and restores java bootstrap on
i686-pc-cygwin. C tests running now, have only got as far as
gcc.c-torture/execute/20020328-1.c yet but no sign of any failures. Y'all
know how lumbering Cygwin can be(*), it'll be way late tonight before it
completes, so would it be OK after say just C and Java testing?
cheers,
DaveK
--
(*) - our mascot isn't a hippo for nothing!
Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c (revision 151860)
+++ gcc/dwarf2out.c (working copy)
@@ -11192,7 +11192,6 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mod
break;
}
- symref:
mem_loc_result = new_loc_descr (DW_OP_addr, 0, 0);
mem_loc_result->dw_loc_oprnd1.val_class = dw_val_class_addr;
mem_loc_result->dw_loc_oprnd1.v.val_addr = rtl;
@@ -11607,8 +11606,8 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mod
break;
case CONST_STRING:
- rtl = get_debug_string_label (XSTR (rtl, 0));
- goto symref;
+ /* These can't easily be tracked, see PR41404. */
+ break;
default:
#ifdef ENABLE_CHECKING