aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-03-29 01:53:46 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2011-03-29 01:53:46 +0200
commit2b80199f41d444c88474b32792a7e828f2a96b68 (patch)
tree7d5601e9e49e4f8fa5cf78fc46ce899d76d94f4f /gcc/dwarf2out.c
parentb9da60aea69647fd7957dc328a8431412157d3a7 (diff)
downloadgcc-2b80199f41d444c88474b32792a7e828f2a96b68.zip
gcc-2b80199f41d444c88474b32792a7e828f2a96b68.tar.gz
gcc-2b80199f41d444c88474b32792a7e828f2a96b68.tar.bz2
re PR debug/48203 (ICE in dwarf2out.c while building eglibc.)
PR debug/48203 * cfgexpand.c (expand_debug_expr) <case SSA_NAME>: Only create ENTRY_VALUE if incoming or address of incoming's MEM is a hard REG. * dwarf2out.c (mem_loc_descriptor): Don't emit DW_OP_GNU_entry_value of DW_OP_fbreg. * var-tracking.c (vt_add_function_parameter): Ensure cselib_lookup on ENTRY_VALUE is able to find the canonical parameter VALUE. * cselib.c (rtx_equal_for_cselib_1) <case ENTRY_VALUE>: Use rtx_equal_p instead of rtx_equal_for_cselib_1 to compare ENTRY_VALUE_EXPs. (cselib_hash_rtx) <case ENTRY_VALUE>: If ENTRY_VALUE_EXP is a REG_P or MEM_P with REG_P address, compute hash directly instead of calling cselib_hash_rtx on ENTRY_VALUE_EXP. (preserve_only_constants): Don't clear VALUES forwaring ENTRY_VALUE to some other VALUE. * gcc.dg/pr48203.c: New test. From-SVN: r171640
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 77d533e..182a894 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -13891,7 +13891,7 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
dw_loc_descr_ref ref
= mem_loc_descriptor (ENTRY_VALUE_EXP (rtl), GET_MODE (rtl),
VAR_INIT_STATUS_INITIALIZED);
- if (ref == NULL)
+ if (ref == NULL || ref->dw_loc_opc == DW_OP_fbreg)
return NULL;
mem_loc_result->dw_loc_oprnd1.v.val_loc = ref;
}