1 /* { dg-options "-Os -fdump-rtl-hoist -fno-code-hoisting" } */
2 /* The rtl hoist pass requires that the expression to be hoisted can
3 be assigned without clobbering cc. For a PLUS rtx on S/390 this
4 requires a load address instruction which is fine on 64 bit but
5 cannot be used on 31 bit since it does a 31 bit add only. */
6 /* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" { target { !s390*-*-* || lp64 } } } } */
14 long foo (long x
, long y
, long z
)
16 /* "x+y" won't be hoisted if "-fira-hoist-pressure" is disabled,
17 because its rtx_cost is too small. */
20 a
[1] = a
[0] + a
[2] + a
[3] + a
[4] + a
[5] + a
[6];
21 a
[2] = a
[1] + a
[3] + a
[5] + a
[5] + a
[6] + a
[7];
22 a
[3] = a
[2] + a
[5] + a
[7] + a
[6] + a
[7] + a
[8];
23 a
[4] = a
[3] + a
[7] + a
[11] + a
[7] + a
[8] + a
[9];
24 a
[5] = a
[5] + a
[11] + a
[13] + a
[8] + a
[9] + a
[10];
25 a
[6] = a
[7] + a
[13] + a
[17] + a
[9] + a
[10] + a
[11];
26 a
[7] = a
[11] + a
[17] + a
[19] + a
[10] + a
[11] + a
[12];