Hi Guys, I am checking in the patch below to fix several failures in the GCC testsuite for the M32R target. The issue is the movsicc pattern which is a holdover from when the port from converted from using cc0. The pattern was written as if a previous instruction had set the CC bits, whereas in fact it is supposed to move CC bits into a general register.
The patch disables the movsicc pattern, which means that some optimizations can be missed, but it does also fix the following tests: > PASS: gcc.c-torture/execute/20040709-1.c -O2 execution test > PASS: gcc.c-torture/execute/20040709-1.c -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions execution test > PASS: gcc.c-torture/execute/20040709-1.c -O3 -g execution test > PASS: gcc.c-torture/execute/20040709-1.c -Os execution test > PASS: gcc.c-torture/execute/20040709-1.c -O2 -flto -fno-use-linker-plugin > -flto-partition=none execution test > PASS: gcc.c-torture/execute/20040709-1.c -O2 -flto -fuse-linker-plugin > -fno-fat-lto-objects execution test > PASS: gcc.c-torture/execute/20040709-2.c -O2 execution test > PASS: gcc.c-torture/execute/20040709-2.c -O3 -fomit-frame-pointer > -funroll-loops -fpeel-loops -ftracer -finline-functions execution test > PASS: gcc.c-torture/execute/20040709-2.c -O3 -g execution test > PASS: gcc.c-torture/execute/20040709-2.c -Os execution test > PASS: gcc.c-torture/execute/20040709-2.c -O2 -flto -fno-use-linker-plugin > -flto-partition=none execution test > PASS: gcc.c-torture/execute/20040709-2.c -O2 -flto -fuse-linker-plugin > -fno-fat-lto-objects execution test > PASS: gcc.c-torture/execute/20040709-3.c -O2 execution test > PASS: gcc.c-torture/execute/20040709-3.c -O3 -g execution test > PASS: gcc.c-torture/execute/20040709-3.c -Os execution test > PASS: gcc.c-torture/execute/20040709-3.c -O2 -flto -fno-use-linker-plugin > -flto-partition=none execution test > PASS: gcc.c-torture/execute/20040709-3.c -O2 -flto -fuse-linker-plugin > -fno-fat-lto-objects execution test > PASS: gcc.dg/strcmpopt_2.c execution test > PASS: gcc.dg/lto/pr67452 c_lto_pr67452_0.o-c_lto_pr67452_0.o link, -O2 -flto > -fopenmp-simd Cheers Nick gcc/ChangeLog 2020-06-25 Nick Clifton <ni...@redhat.com> * config/m32r/m32r.md (movsicc): Disable pattern. diff --git a/gcc/config/m32r/m32r.md b/gcc/config/m32r/m32r.md index 823342af1b4..6ecd9ce89ab 100644 --- a/gcc/config/m32r/m32r.md +++ b/gcc/config/m32r/m32r.md @@ -2162,6 +2162,12 @@ "" " { + /* FIXME: This expansion is hold over from a failed conversion of this + port away from using cc0. It still relies upon the last comparison + being the one that is now tested. Disabled for now in order to + improve the generation of working code. */ + FAIL; + if (! zero_and_one (operands [2], operands [3])) FAIL;