From 5987d8a79cda1069c774e5c302d5597310270026 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Wed, 10 Mar 2021 03:54:16 +0100 Subject: [PATCH] cris: define DWARF_FRAME_REGISTERS When DWARF_FRAME_REGISTERS isn't defined, the default is FIRST_PSEUDO_REGISTER which means that if you add faked registers to the port, used for frame-context related elimination, room is allocated for them in the register context used for frame-unwinding, which is wasteful because they're eliminated before the final form of the code that is emitted. Stopping after MOF saves two register slots in the unwind contest, compared to the current default. For regular C programming this is uninteresting, but defining DWARF_FRAME_REGISTERS now also avoids the need to remember to define it later, when twiddling with additional faked registers (alternatively suffering churn from comparing differences in unwind context). As expected, no effect on test-results, coremark or local (C-specific) microbenchmarks. gcc: * config/cris/cris.h (DWARF_FRAME_REGISTERS): Define. --- gcc/config/cris/cris.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h index 1f8ccc5dec9..4d04ef869f3 100644 --- a/gcc/config/cris/cris.h +++ b/gcc/config/cris/cris.h @@ -588,6 +588,9 @@ enum reg_class #define STATIC_CHAIN_REGNUM CRIS_STATIC_CHAIN_REGNUM +/* No unwind context is needed for faked registers nor DCCR. Currently not MOF + too, but let's keep that open. */ +#define DWARF_FRAME_REGISTERS (CRIS_MOF_REGNUM + 1) /* Node: Elimination */