Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/gcc.dg/hoist-register-pressure-2.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/gcc.dg/hoist-register-pressure-2.c Fri Oct 27 22:46:09 2017 +0900 @@ -0,0 +1,36 @@ +/* { dg-options "-Os -fdump-rtl-hoist -fno-code-hoisting" } */ +/* 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*-*-* || lp64 } } } } */ + +#define BUF 100 +long a[BUF]; + +void com (long); +void bar (long); + +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. */ + 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; +}