On Fri, Jan 31, 2020 at 10:12:08AM +0000, Tamar Christina wrote: > 2020-01-31 Tamar Christina <tamar.christ...@arm.com> > > PR 91838 > * simplify-rtx.c (simplify_binary_operation_1): Update LSHIFTRT case > to truncate if allowed or reject combination. > > gcc/testsuite/ChangeLog: > > 2020-01-31 Tamar Christina <tamar.christ...@arm.com> > > PR 91838 > * g++.dg/pr91838.C: New test.
The test FAILs on i686-linux with: FAIL: g++.dg/pr91838.C (test for excess errors) Excess errors: /home/jakub/src/gcc/gcc/testsuite/g++.dg/pr91838.C:7:8: warning: MMX vector return without MMX enabled changes the ABI [-Wpsabi] /home/jakub/src/gcc/gcc/testsuite/g++.dg/pr91838.C:7:3: warning: MMX vector argument without MMX enabled changes the ABI [-Wpsabi] and on x86_64-linux with -m32 testing with failure to match the expected pattern in there (or both with e.g. -m32/-mno-mmx/-mno-sse testing). The test is also in a wrong directory, has non-standard specification that it requires c++11 or later. Fixed thusly, regtested on i686-linux and x86_64-linux (the latter with --target_board=unix\{-m32/-mno-mmx/-mno-sse,-m32,-m64\}), committed to trunk as obvious. 2020-01-31 Jakub Jelinek <ja...@redhat.com> PR rtl-optimization/91838 * g++.dg/pr91838.C: Moved to ... * g++.dg/opt/pr91838.C: ... here. Require c++11 target instead of dg-skip-if for c++98. Pass -Wno-psabi -w to avoid psabi style warnings on vector arg passing or return. Add -masm=att on i?86/x86_64. Only check for pxor %xmm0, %xmm0 on lp64 i?86/x86_64. diff --git a/gcc/testsuite/g++.dg/opt/pr91838.C b/gcc/testsuite/g++.dg/opt/pr91838.C new file mode 100644 index 00000000000..fdf48094ade --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr91838.C @@ -0,0 +1,11 @@ +/* { dg-do compile { target c++11 } } */ +/* { dg-additional-options "-O2 -Wno-psabi -w" } */ +/* { dg-additional-options "-masm=att" { target i?86-*-* x86_64-*-* } } */ + +using T = unsigned char; // or ushort +using V [[gnu::vector_size(8)]] = T; +V f(V x) { + return x >> 8 * sizeof(T); +} + +/* { dg-final { scan-assembler {pxor\s+%xmm0,\s+%xmm0} { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ diff --git a/gcc/testsuite/g++.dg/pr91838.C b/gcc/testsuite/g++.dg/pr91838.C deleted file mode 100644 index 4dbaef05ce8..00000000000 --- a/gcc/testsuite/g++.dg/pr91838.C +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile } */ -/* { dg-additional-options "-O2" } */ -/* { dg-skip-if "" { *-*-* } {-std=c++98} } */ - -using T = unsigned char; // or ushort, or uint -using V [[gnu::vector_size(8)]] = T; -V f(V x) { - return x >> 8 * sizeof(T); -} - -/* { dg-final { scan-assembler {pxor\s+%xmm0,\s+%xmm0} { target x86_64-*-* } } } */ Jakub