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:
Richard Sandiford 2014-08-28 06:24:57 +00:00 committed by Richard Sandiford
parent 4f498863ce
commit 7e56c2835e
2 changed files with 31 additions and 20 deletions

View File

@ -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.

View File

@ -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,12 +5539,16 @@ 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
@ -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)))