Marcus Shawcroft wrote: > On 4 September 2014 15:14, Jiong Wang <jiong.w...@arm.com> wrote: > > this patch enabled stack shrink-wrap support on AArch64. > > > > no regression on aarch64-none-elf bare-metal. > > aarch64 bootstrap OK. > > > > ok to install? > > > > 2014-09-04 Renlin Li<renlin...@arm.com> > > > > gcc/ > > * config/aarch64/aarch64.md (return): New expand. > > (simple_return): Likewise. > > * config/aarch64/aarch64.c (aarch64_use_return_insn_p): New function. > > * config/aarch64/aarch64-protos.h (aarch64_use_return_insn_p): New > > declaration. > > > > gcc/testsuite > > * gcc.dg/ira-shrinkwrap-prep-1.c: Enable aarch64. > > * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise. > > * gcc.dg/pr10474.c: Likewise. > > OK, committed as 215508 > /Marcus
This patch causes a regression when compiling this testcase with -O2 and above: void mm(double** A, double** B, double** C, unsigned N, unsigned S) { unsigned i, j, k; for (i = 0; i < N; i += S) { for (j = 0; j < N; j += S) { for (k = 0; k < N; k += S) { unsigned ib = (N) < ((i + S)) ? N : (i + S); unsigned jb = (N) < ((j + S)) ? N : (j + S); unsigned kb = (N) < ((k + S)) ? N : (k + S); unsigned i0, j0, k0; for (i0 = i; i0 < ib; i0++) { for (j0 = j; j0 < jb; j0++) { double* a = A[i0]; double* b = B[j0]; double scratch = C[i0][j0]; for (k0 = k; k0 < kb; k0++) { scratch += a[k0] * b[k0]; } C[i0][j0] = scratch; } } } } } asm volatile ("bar:"); } $ aarch64-gcc -O2 mm.c -S -o - | grep 'bar:' | wc -l 2 $ aarch64-gcc -O1 mm.c -S -o - | grep 'bar:' | wc -l 1 Thanks, Sebastian