diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-09-12 17:49:38 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-09-12 17:49:38 +0200 |
commit | 7d8102762c1b37bd1b0b59795a67ffc0da6631a5 (patch) | |
tree | 34a400a54600fe6c44115b7bb2447a9fc4285f81 /gcc/expr.c | |
parent | 886a64f901a20efd755f9fc3e71419902b0cfd41 (diff) | |
download | gcc-7d8102762c1b37bd1b0b59795a67ffc0da6631a5.zip gcc-7d8102762c1b37bd1b0b59795a67ffc0da6631a5.tar.gz gcc-7d8102762c1b37bd1b0b59795a67ffc0da6631a5.tar.bz2 |
re PR debug/50299 (entryval: bigendian 32bit->64bit extension breaks address match)
PR debug/50299
* calls.c (load_register_parameters): Use use_reg_mode instead
of use_reg when adding a single register CALL_INSN_FUNCTION_USAGE
entry.
(expand_call): Set EXPR_LIST mode to TYPE_MODE of the argument
for stack CALL_INSN_FUNCTION_USAGE uses.
* expr.h (use_reg_mode): New prototype.
(use_reg): Changed into inline around use_reg_mode.
* expr.c (use_reg): Renamed to...
(use_reg_mode): ... this. Added MODE argument, set EXPR_LIST
mode to that mode instead of VOIDmode.
* var-tracking.c (prepare_call_arguments): Don't track parameters
whose EXPR_LIST mode is VOIDmode, BLKmode or X mode isn't convertible
to it using lowpart_subreg. Convert VALUE and REG/MEM to the
EXPR_LIST mode.
From-SVN: r178784
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -2184,13 +2184,12 @@ copy_blkmode_from_reg (rtx tgtblk, rtx srcreg, tree type) to by CALL_FUSAGE. REG must denote a hard register. */ void -use_reg (rtx *call_fusage, rtx reg) +use_reg_mode (rtx *call_fusage, rtx reg, enum machine_mode mode) { gcc_assert (REG_P (reg) && REGNO (reg) < FIRST_PSEUDO_REGISTER); *call_fusage - = gen_rtx_EXPR_LIST (VOIDmode, - gen_rtx_USE (VOIDmode, reg), *call_fusage); + = gen_rtx_EXPR_LIST (mode, gen_rtx_USE (VOIDmode, reg), *call_fusage); } /* Add USE expressions to *CALL_FUSAGE for each of NREGS consecutive regs, |