alias.c (find_base_value): Recognize TRUNCATE.
* alias.c (find_base_value): Recognize TRUNCATE. (record_set): In PLUS case, invalidate if other summand is also a base value. From-SVN: r39128
This commit is contained in:
parent
08c2df0f4f
commit
61f0131c68
|
@ -1,3 +1,9 @@
|
|||
Fri Jan 19 09:18:42 2001 J"orn Rennecke <amylaar@redhat.com>
|
||||
|
||||
* alias.c (find_base_value): Recognize TRUNCATE.
|
||||
(record_set): In PLUS case, invalidate if other summand is also a
|
||||
base value.
|
||||
|
||||
Thu Jan 18 06:43:04 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* flow.c (mark_set_1, case PARALLEL): Now case; rework to allow
|
||||
|
|
21
gcc/alias.c
21
gcc/alias.c
|
@ -759,6 +759,10 @@ find_base_value (src)
|
|||
return find_base_value (XEXP (src, 0));
|
||||
return 0;
|
||||
|
||||
case TRUNCATE:
|
||||
if (GET_MODE_SIZE (GET_MODE (src)) < GET_MODE_SIZE (Pmode))
|
||||
break;
|
||||
/* Fall through. */
|
||||
case ZERO_EXTEND:
|
||||
case SIGN_EXTEND: /* used for NT/Alpha pointers */
|
||||
case HIGH:
|
||||
|
@ -832,11 +836,26 @@ record_set (dest, set, data)
|
|||
switch (GET_CODE (src))
|
||||
{
|
||||
case LO_SUM:
|
||||
case PLUS:
|
||||
case MINUS:
|
||||
if (XEXP (src, 0) != dest && XEXP (src, 1) != dest)
|
||||
new_reg_base_value[regno] = 0;
|
||||
break;
|
||||
case PLUS:
|
||||
/* If the value we add in the PLUS is also a valid base value,
|
||||
this might be the actual base value, and the original value
|
||||
an index. */
|
||||
{
|
||||
rtx other = NULL_RTX;
|
||||
|
||||
if (XEXP (src, 0) == dest)
|
||||
other = XEXP (src, 1);
|
||||
else if (XEXP (src, 1) == dest)
|
||||
other = XEXP (src, 0);
|
||||
|
||||
if (! other || find_base_value (other))
|
||||
new_reg_base_value[regno] = 0;
|
||||
break;
|
||||
}
|
||||
case AND:
|
||||
if (XEXP (src, 0) != dest || GET_CODE (XEXP (src, 1)) != CONST_INT)
|
||||
new_reg_base_value[regno] = 0;
|
||||
|
|
Loading…
Reference in New Issue