re PR debug/41236 (RTL checking failure compiling libgcc)

PR debug/41236
	* dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
	SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
	it or SUBREG.

From-SVN: r151385
This commit is contained in:
Jakub Jelinek 2009-09-03 18:33:27 +02:00 committed by Jakub Jelinek
parent 08ab0acf19
commit 7d4507cb30
2 changed files with 12 additions and 5 deletions

View file

@ -1,5 +1,10 @@
2009-09-03 Jakub Jelinek <jakub@redhat.com>
PR debug/41236
* dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
SIGN_EXTEND or ZERO_EXTEND. Don't assume there is a REG inside of
it or SUBREG.
PR debug/41238
* function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
the stack slot if it is passed by invisible reference.

View file

@ -11671,21 +11671,23 @@ loc_descriptor (rtx rtl, enum machine_mode mode,
switch (GET_CODE (rtl))
{
case SUBREG:
case SIGN_EXTEND:
case ZERO_EXTEND:
/* The case of a subreg may arise when we have a local (register)
variable or a formal (register) parameter which doesn't quite fill
up an entire register. For now, just assume that it is
legitimate to make the Dwarf info refer to the whole register which
contains the given subreg. */
rtl = SUBREG_REG (rtl);
/* ... fall through ... */
loc_result = loc_descriptor (SUBREG_REG (rtl), mode, initialized);
break;
case REG:
loc_result = reg_loc_descriptor (rtl, initialized);
break;
case SIGN_EXTEND:
case ZERO_EXTEND:
loc_result = loc_descriptor (XEXP (rtl, 0), mode, initialized);
break;
case MEM:
loc_result = mem_loc_descriptor (XEXP (rtl, 0), GET_MODE (rtl),
initialized);