]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
MIPS/testsuite: Fix umips-save-restore-1.c
authorYunQiang Su <syq@gcc.gnu.org>
Fri, 28 Jun 2024 08:11:35 +0000 (16:11 +0800)
committerYunQiang Su <syq@gcc.gnu.org>
Fri, 5 Jul 2024 07:52:38 +0000 (15:52 +0800)
With some recent optimization, -O1/-O2/-O3 can archive almost same
performace/size by stack load/store.  Thus lwm/swm will save/store
less callee-saved register.  In fact only $16 is saved with swm.

To be sure that this optimization does exist, let's add 2 more
function calls.  So that lwm/swm can be much more profitable.

If we add only once more, -O1 will still use stack load/store.

gcc/testsuite
* gcc.target/mips/umips-save-restore-1.c: Be sure lwm/swm
are used for more callee-saved registers with addtional
2 more function calls.

gcc/testsuite/gcc.target/mips/umips-save-restore-1.c

index ff1ea4b339a240c29d444add346c052a2f2c7ba6..0e2c4dcc8442470dd39aa5f936aa2c87d4576af7 100644 (file)
@@ -7,12 +7,14 @@ int bar (int, int, int, int, int);
 MICROMIPS int
 foo (int n, int a, int b, int c, int d)
 {
-  int i, j;
+  int i, j, k, l;
 
   i = bar (n, a, b, c, d);
   j = bar (n, a, b, c, d);
-  return i + j;
+  k = bar (n, a, b, c, d);
+  l = bar (n, a, b, c, d);
+  return i + j + k + l;
 }
 
-/* { dg-final { scan-assembler "\tswm\t\\\$16-\\\$2(0|1),\\\$31" } } */
-/* { dg-final { scan-assembler "\tlwm\t\\\$16-\\\$2(0|1),\\\$31" } } */
+/* { dg-final { scan-assembler "\tswm\t\\\$16-\\\$2(2|3),\\\$31" } } */
+/* { dg-final { scan-assembler "\tlwm\t\\\$16-\\\$2(2|3),\\\$31" } } */