cris: Define TARGET_FLAGS_REGNUM.
authorHans-Peter Nilsson <hp@axis.com>
Thu, 23 Jan 2020 19:24:36 +0000 (20:24 +0100)
committerHans-Peter Nilsson <hp@axis.com>
Sat, 9 May 2020 01:39:35 +0000 (03:39 +0200)
This made a whole lot of difference regarding regressions in the
delay-slot filling.  Before this, comparing __lshrdi3 for v10
before/after decc0ration and other nearby functions was worse by
several missing delay-slot fills; now down to 1.

Also, add a comment about *not* defining
TARGET_FIXED_CONDITION_CODE_REGS.

gcc:
* config/cris/cris.c (TARGET_FLAGS_REGNUM): Define.

gcc/ChangeLog
gcc/config/cris/cris.c

index 915a007..3928ee7 100644 (file)
@@ -38,6 +38,8 @@
        * config/cris/cris.md (zcond): New code_iterator.
        ("*cbranch<mode>4_btstq<CC>"): New insn_and_split.
 
+       * config/cris/cris.c (TARGET_FLAGS_REGNUM): Define.
+
 2020-05-08  Vladimir Makarov  <vmakarov@redhat.com>
 
        * ira-color.c (update_costs_from_allocno): Remove
index 9fdabe2..eecda83 100644 (file)
@@ -219,6 +219,16 @@ int cris_cpu_version = CRIS_DEFAULT_CPU_VERSION;
 #undef TARGET_PREFERRED_RELOAD_CLASS
 #define TARGET_PREFERRED_RELOAD_CLASS cris_preferred_reload_class
 
+/* We don't define TARGET_FIXED_CONDITION_CODE_REGS, as at the time of
+   this writing, it has an effect only on pre-reload CSE and when
+   scheduling (and for "macro fusion" at that).  Neither applies for
+   CRIS so don't waste compilation cycles on enabling a pass that does
+   nothing.  Beware of changes to its usage; it may make sense to enable
+   "later".  */
+
+#undef TARGET_FLAGS_REGNUM
+#define TARGET_FLAGS_REGNUM CRIS_CC0_REGNUM
+
 #undef TARGET_REGISTER_MOVE_COST
 #define TARGET_REGISTER_MOVE_COST cris_register_move_cost
 #undef TARGET_MEMORY_MOVE_COST