@@ -1,14 +1,18 @@
/* { dg-options "-Os -fdump-rtl-hoist" } */
-/* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" { target { nonpic } } } } */
+/* The rtl hoist pass requires that the expression to be hoisted can
+ be assigned without clobbering cc. For a PLUS rtx on S/390 this
+ requires a load address instruction which is fine on 64 bit but
+ cannot be used on 31 bit since it does a 31 bit add only. */
+/* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" { target { { ! s390-*-* } && nonpic } } } } */
/* { dg-final { cleanup-rtl-dump "hoist" } } */
#define BUF 100
-int a[BUF];
+long a[BUF];
-void com (int);
-void bar (int);
+void com (long);
+void bar (long);
-int foo (int x, int y, int z)
+long foo (long x, long y, long z)
{
/* "x+y" won't be hoisted if "-fira-hoist-pressure" is disabled,
because its rtx_cost is too small. */
@@ -1,14 +1,18 @@
/* { dg-options "-Os -fdump-rtl-hoist" } */
-/* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" } } */
+/* The rtl hoist pass requires that the expression to be hoisted can
+ be assigned without clobbering cc. For a PLUS rtx on S/390 this
+ requires a load address instruction which is fine on 64 bit but
+ cannot be used on 31 bit since it does a 31 bit add only. */
+/* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" { target { ! s390-*-* } } } } */
/* { dg-final { cleanup-rtl-dump "hoist" } } */
#define BUF 100
-int a[BUF];
+long a[BUF];
-void com (int);
-void bar (int);
+void com (long);
+void bar (long);
-int foo (int x, int y, int z)
+long foo (long x, long y, long z)
{
/* "x+y" won't be hoisted if "-fira-hoist-pressure" is disabled,
because its rtx_cost is too small. */
@@ -1,14 +1,18 @@
/* { dg-options "-Os -fdump-rtl-hoist" } */
-/* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" } } */
+/* The rtl hoist pass requires that the expression to be hoisted can
+ be assigned without clobbering cc. For a PLUS rtx on S/390 this
+ requires a load address instruction which is fine on 64 bit but
+ cannot be used on 31 bit since it does a 31 bit add only. */
+/* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" { target { ! s390-*-* } } } } */
/* { dg-final { cleanup-rtl-dump "hoist" } } */
#define BUF 100
-int a[BUF];
+long a[BUF];
-void com (int);
-void bar (int);
+void com (long);
+void bar (long);
-int foo (int x, int y, int z)
+long foo (long x, long y, long z)
{
/* "x+y" won't be hoisted if "-fira-hoist-pressure" is disabled,
because its rtx_cost is too small. */