CRIS: Handle POST_INC in cris_rtx_costs

POST_INC is a code that's only supposed to be valid in an address, so
it should only be calculated through the TARGET_ADDRESS_COST hook, not
by the TARGET_RTX_COSTS hook.  But, because rtx_cost does not
special-case MEM costs by calling TARGET_ADDRESS_COST, we get here as
part of e.g. the auto-inc-dec and combine passes, so deal with it for
the time being.  Without this, the cost is the value of size_factor *
COSTS_N_INSNS (1), i.e. 4 per word.  There's no obvious observable
effect for generated code (coremark, libgcc and newlib-libc checked
for -march=v10), but it may make a difference in the future, so be
safe and correct the cost.

Tested at r16-6493-ge77ba7ef8c75 for cris-elf.  That the cost actually
is changed is observable mostly simply by applying -dp when compiling
 int incref(int n, char *p)
 {
   int sum = 0;

   while (n--)
     sum += *p++;

   return sum;
 }
and seeing that the cost for the single autoincrement is changed from e.g.
	adds.b [$r11+],$r10	;# 15	[c=12 l=2]  *addsqisi_swap/1
to
	adds.b [$r11+],$r10	;# 15	[c=8 l=2]  *addsqisi_swap/1

gcc:
	* config/cris/cris.cc (cris_rtx_costs) <POST_INC>: Handle POST_INC
	as ZERO_EXTEND and SIGN_EXTEND, i.e. as an operator without cost.
1 file changed