summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/hoist-register-pressure-2.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/hoist-register-pressure-2.c')
-rw-r--r--gcc/testsuite/gcc.dg/hoist-register-pressure-2.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/hoist-register-pressure-2.c b/gcc/testsuite/gcc.dg/hoist-register-pressure-2.c
new file mode 100644
index 0000000000..30408f318c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/hoist-register-pressure-2.c
@@ -0,0 +1,33 @@
+/* { dg-options "-Os -fdump-rtl-hoist" } */
+/* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" } } */
+/* { dg-final { cleanup-rtl-dump "hoist" } } */
+
+#define BUF 100
+int a[BUF];
+
+void com (int);
+void bar (int);
+
+int foo (int x, int y, int z)
+{
+ /* "x+y" won't be hoisted if "-fira-hoist-pressure" is disabled,
+ because its rtx_cost is too small. */
+ if (z)
+ {
+ a[1] = a[0];
+ a[2] = a[1];
+ a[3] = a[3];
+ a[4] = a[5];
+ a[5] = a[7];
+ a[6] = a[11];
+ a[7] = a[13];
+ a[8] = a[17];
+ com (x+y);
+ }
+ else
+ {
+ bar (x+y);
+ }
+
+ return 0;
+}