var-tracking.c (non_suitable_const): Turn from being a for_each_rtx callback to being a function that examines each...
gcc/ * var-tracking.c (non_suitable_const): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. Remove handling of null rtxes. (add_uses): Update accordingly. From-SVN: r214662
This commit is contained in:
parent
4f498863ce
commit
7e56c2835e
@ -1,3 +1,10 @@
|
||||
2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* var-tracking.c (non_suitable_const): Turn from being a for_each_rtx
|
||||
callback to being a function that examines each subrtx itself.
|
||||
Remove handling of null rtxes.
|
||||
(add_uses): Update accordingly.
|
||||
|
||||
2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
* var-tracking.c: Include rtl-iter.h.
|
||||
|
@ -5523,13 +5523,14 @@ preserve_value (cselib_val *val)
|
||||
any rtxes not suitable for CONST use not replaced by VALUEs
|
||||
are discovered. */
|
||||
|
||||
static int
|
||||
non_suitable_const (rtx *x, void *data ATTRIBUTE_UNUSED)
|
||||
static bool
|
||||
non_suitable_const (const_rtx x)
|
||||
{
|
||||
if (*x == NULL_RTX)
|
||||
return 0;
|
||||
|
||||
switch (GET_CODE (*x))
|
||||
subrtx_iterator::array_type array;
|
||||
FOR_EACH_SUBRTX (iter, array, x, ALL)
|
||||
{
|
||||
const_rtx x = *iter;
|
||||
switch (GET_CODE (x))
|
||||
{
|
||||
case REG:
|
||||
case DEBUG_EXPR:
|
||||
@ -5538,13 +5539,17 @@ non_suitable_const (rtx *x, void *data ATTRIBUTE_UNUSED)
|
||||
case CC0:
|
||||
case ASM_INPUT:
|
||||
case ASM_OPERANDS:
|
||||
return 1;
|
||||
return true;
|
||||
case MEM:
|
||||
return !MEM_READONLY_P (*x);
|
||||
if (!MEM_READONLY_P (x))
|
||||
return true;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Add uses (register and memory references) LOC which will be tracked
|
||||
to VTI (bb)->mos. INSN is instruction which the LOC is part of. */
|
||||
@ -5589,8 +5594,7 @@ add_uses (rtx *ploc, void *data)
|
||||
}
|
||||
|
||||
if (CONSTANT_P (vloc)
|
||||
&& (GET_CODE (vloc) != CONST
|
||||
|| for_each_rtx (&vloc, non_suitable_const, NULL)))
|
||||
&& (GET_CODE (vloc) != CONST || non_suitable_const (vloc)))
|
||||
/* For constants don't look up any value. */;
|
||||
else if (!VAR_LOC_UNKNOWN_P (vloc) && !unsuitable_loc (vloc)
|
||||
&& (val = find_use_val (vloc, GET_MODE (oloc), cui)))
|
||||
|
Loading…
Reference in New Issue
Block a user