016-08-04 Bernd Edlinger <bernd.edlinger@hotmail.de>

PR rtl-optimization/71779
        * emit-rtl.c (set_reg_attrs_from_value): Only propagate REG_POINTER,
        if the value was sign-extended according to POINTERS_EXTEND_UNSIGNED
        or if it was truncated.

From-SVN: r239123
This commit is contained in:
Bernd Edlinger 2016-08-04 13:23:36 +00:00 committed by Bernd Edlinger
parent 086ad22e0e
commit 8d8e740c1c
2 changed files with 10 additions and 1 deletions

View File

@ -1,5 +1,10 @@
2016-08-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR rtl-optimization/71779
* emit-rtl.c (set_reg_attrs_from_value): Only propagate REG_POINTER,
if the value was sign-extended according to POINTERS_EXTEND_UNSIGNED
or if it was truncated.
PR rtl-optimization/70903
* cse.c (cse_insn): If DEST is a paradoxical SUBREG, don't record DEST.

View File

@ -1156,7 +1156,11 @@ set_reg_attrs_from_value (rtx reg, rtx x)
{
#if defined(POINTERS_EXTEND_UNSIGNED)
if (((GET_CODE (x) == SIGN_EXTEND && POINTERS_EXTEND_UNSIGNED)
|| (GET_CODE (x) != SIGN_EXTEND && ! POINTERS_EXTEND_UNSIGNED))
|| (GET_CODE (x) == ZERO_EXTEND && ! POINTERS_EXTEND_UNSIGNED)
|| (paradoxical_subreg_p (x)
&& ! (SUBREG_PROMOTED_VAR_P (x)
&& SUBREG_CHECK_PROMOTED_SIGN (x,
POINTERS_EXTEND_UNSIGNED))))
&& !targetm.have_ptr_extend ())
can_be_reg_pointer = false;
#endif