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:
parent
08ab0acf19
commit
7d4507cb30
2 changed files with 12 additions and 5 deletions
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue