re PR debug/48163 (ICEs for cris-elf, like gcc.c-torture/compile/calls.c gcc.c-torture/execute/complex-1.c)
PR debug/48163 * var-tracking.c (prepare_call_arguments): If CALL target is a non-SYMBOL_REF CONSTANT_P, just add that into the list as pc instead of looking it up using cselib_lookup and use Pmode for it if x has VOIDmode. * dwarf2out.c (gen_subprogram_die): If also both first and second CONCAT arguments are VOIDmode, use mode of CONCAT itself. From-SVN: r171114
This commit is contained in:
parent
a82ff31f39
commit
8b29c87a61
@ -1,5 +1,13 @@
|
||||
2011-03-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/48163
|
||||
* var-tracking.c (prepare_call_arguments): If CALL target
|
||||
is a non-SYMBOL_REF CONSTANT_P, just add that into the list as
|
||||
pc instead of looking it up using cselib_lookup and use
|
||||
Pmode for it if x has VOIDmode.
|
||||
* dwarf2out.c (gen_subprogram_die): If also both first and
|
||||
second CONCAT arguments are VOIDmode, use mode of CONCAT itself.
|
||||
|
||||
PR debug/48163
|
||||
* function.c (assign_parms): For data.passed_pointer parms
|
||||
use MEM of data.entry_parm instead of data.entry_parm itself
|
||||
|
@ -19481,7 +19481,11 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
|
||||
== REGNO (XEXP (XEXP (XEXP (next_arg, 0), 0), 0)))
|
||||
next_arg = XEXP (next_arg, 1);
|
||||
if (mode == VOIDmode)
|
||||
mode = GET_MODE (XEXP (XEXP (arg, 0), 0));
|
||||
{
|
||||
mode = GET_MODE (XEXP (XEXP (arg, 0), 0));
|
||||
if (mode == VOIDmode)
|
||||
mode = GET_MODE (XEXP (arg, 0));
|
||||
}
|
||||
if (GET_MODE_CLASS (mode) != MODE_INT
|
||||
|| GET_MODE_SIZE (mode) > DWARF2_ADDR_SIZE)
|
||||
continue;
|
||||
|
@ -5818,7 +5818,16 @@ prepare_call_arguments (basic_block bb, rtx insn)
|
||||
if (GET_CODE (x) == CALL && MEM_P (XEXP (x, 0)))
|
||||
{
|
||||
x = XEXP (XEXP (x, 0), 0);
|
||||
if (GET_CODE (x) != SYMBOL_REF)
|
||||
if (GET_CODE (x) == SYMBOL_REF)
|
||||
/* Don't record anything. */;
|
||||
else if (CONSTANT_P (x))
|
||||
{
|
||||
x = gen_rtx_CONCAT (GET_MODE (x) == VOIDmode ? Pmode : GET_MODE (x),
|
||||
pc_rtx, x);
|
||||
call_arguments
|
||||
= gen_rtx_EXPR_LIST (VOIDmode, x, call_arguments);
|
||||
}
|
||||
else
|
||||
{
|
||||
cselib_val *val = cselib_lookup (x, GET_MODE (x), 0, VOIDmode);
|
||||
if (val && cselib_preserved_value_p (val))
|
||||
|
Loading…
Reference in New Issue
Block a user