Commit 8f6aedba by Jakub Jelinek Committed by Jakub Jelinek

reload1.c (eliminate_regs_1): If insn is DEBUG_INSN, avoid any modifications…

reload1.c (eliminate_regs_1): If insn is DEBUG_INSN, avoid any modifications outside of the DEBUG_INSN.

	* reload1.c (eliminate_regs_1): If insn is DEBUG_INSN, avoid any
	modifications outside of the DEBUG_INSN.  Accept CLOBBERs inside
	of DEBUG_INSNs.
	(eliminate_regs_in_insn): Eliminate regs even in DEBUG_INSNs.

From-SVN: r156693
parent d2d36740
2010-02-11 Jakub Jelinek <jakub@redhat.com> 2010-02-11 Jakub Jelinek <jakub@redhat.com>
* reload1.c (eliminate_regs_1): If insn is DEBUG_INSN, avoid any
modifications outside of the DEBUG_INSN. Accept CLOBBERs inside
of DEBUG_INSNs.
(eliminate_regs_in_insn): Eliminate regs even in DEBUG_INSNs.
* dwarf2out.c (mem_loc_descriptor) <case MEM>: Use DW_OP_deref_size * dwarf2out.c (mem_loc_descriptor) <case MEM>: Use DW_OP_deref_size
if MEM's mode size isn't DWARF2_ADDR_SIZE. if MEM's mode size isn't DWARF2_ADDR_SIZE.
(mem_loc_descriptor) <do_scompare>: Allow also VOIDmode arguments. (mem_loc_descriptor) <do_scompare>: Allow also VOIDmode arguments.
......
/* Reload pseudo regs into hard regs for insns that require hard regs. /* Reload pseudo regs into hard regs for insns that require hard regs.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -2570,7 +2570,7 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn, ...@@ -2570,7 +2570,7 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn,
else if (reg_renumber && reg_renumber[regno] < 0 else if (reg_renumber && reg_renumber[regno] < 0
&& reg_equiv_invariant && reg_equiv_invariant[regno]) && reg_equiv_invariant && reg_equiv_invariant[regno])
{ {
if (may_use_invariant) if (may_use_invariant || (insn && DEBUG_INSN_P (insn)))
return eliminate_regs_1 (copy_rtx (reg_equiv_invariant[regno]), return eliminate_regs_1 (copy_rtx (reg_equiv_invariant[regno]),
mem_mode, insn, true); mem_mode, insn, true);
/* There exists at least one use of REGNO that cannot be /* There exists at least one use of REGNO that cannot be
...@@ -2685,9 +2685,11 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn, ...@@ -2685,9 +2685,11 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn,
if (ep->from_rtx == XEXP (x, 0) && ep->can_eliminate) if (ep->from_rtx == XEXP (x, 0) && ep->can_eliminate)
{ {
if (! mem_mode if (! mem_mode
/* Refs inside notes don't count for this purpose. */ /* Refs inside notes or in DEBUG_INSNs don't count for
this purpose. */
&& ! (insn != 0 && (GET_CODE (insn) == EXPR_LIST && ! (insn != 0 && (GET_CODE (insn) == EXPR_LIST
|| GET_CODE (insn) == INSN_LIST))) || GET_CODE (insn) == INSN_LIST
|| DEBUG_INSN_P (insn))))
ep->ref_outside_mem = 1; ep->ref_outside_mem = 1;
return return
...@@ -2863,6 +2865,9 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn, ...@@ -2863,6 +2865,9 @@ eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn,
return x; return x;
case CLOBBER: case CLOBBER:
gcc_assert (insn && DEBUG_INSN_P (insn));
break;
case ASM_OPERANDS: case ASM_OPERANDS:
case SET: case SET:
gcc_unreachable (); gcc_unreachable ();
...@@ -3199,6 +3204,9 @@ eliminate_regs_in_insn (rtx insn, int replace) ...@@ -3199,6 +3204,9 @@ eliminate_regs_in_insn (rtx insn, int replace)
|| GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC
|| GET_CODE (PATTERN (insn)) == ASM_INPUT || GET_CODE (PATTERN (insn)) == ASM_INPUT
|| DEBUG_INSN_P (insn)); || DEBUG_INSN_P (insn));
if (DEBUG_INSN_P (insn))
INSN_VAR_LOCATION_LOC (insn)
= eliminate_regs (INSN_VAR_LOCATION_LOC (insn), VOIDmode, insn);
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment