https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116625
Bug ID: 116625 Summary: [15 regression] regressions on arm-eabi since r15-1619-g3b9b8d6cfdf593 Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: testsuite-fail Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: thiago.bauermann at linaro dot org CC: jskumari at gcc dot gnu.org Target Milestone: --- Target: arm Created attachment 59056 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59056&action=edit diff of all generated assembly files Since commit r15-1619-g3b9b8d6cfdf593 we see on arm-eabi all the regressions reported in bug 116623, plus the ones below: Running gcc:gcc.target/arm/cmse/cmse.exp ... FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c -march=armv8.1-m.main+fp -mthumb -O2 scan-assembler lsls\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c -march=armv8.1-m.main+fp -mthumb -O2 scan-assembler lsrs\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c -march=armv8.1-m.main+fp -mthumb -O3 -g scan-assembler lsls\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c -march=armv8.1-m.main+fp -mthumb -O3 -g scan-assembler lsrs\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c -march=armv8.1-m.main+fp -mthumb -O2 scan-assembler lsls\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c -march=armv8.1-m.main+fp -mthumb -O2 scan-assembler lsrs\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c -march=armv8.1-m.main+fp -mthumb -O3 -g scan-assembler lsls\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c -march=armv8.1-m.main+fp -mthumb -O3 -g scan-assembler lsrs\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c -march=armv8.1-m.main+fp -mthumb -O2 scan-assembler lsls\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c -march=armv8.1-m.main+fp -mthumb -O2 scan-assembler lsrs\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c -march=armv8.1-m.main+fp -mthumb -O3 -g scan-assembler lsls\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-8.c -march=armv8.1-m.main+fp -mthumb -O3 -g scan-assembler lsrs\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c -march=armv8.1-m.main+fp -mthumb -O1 scan-assembler lsls\t(r[4-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c -march=armv8.1-m.main+fp -mthumb -O1 scan-assembler lsrs\t(r[4-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c -march=armv8.1-m.main+fp -mthumb -O2 scan-assembler lsls\t(r[4-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c -march=armv8.1-m.main+fp -mthumb -O2 scan-assembler lsrs\t(r[4-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c -march=armv8.1-m.main+fp -mthumb -O3 -g scan-assembler lsls\t(r[4-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/bitfield-and-union.c -march=armv8.1-m.main+fp -mthumb -O3 -g scan-assembler lsrs\t(r[4-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/union-2.c -march=armv8.1-m.main+fp -mthumb -O2 scan-assembler lsls\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/union-2.c -march=armv8.1-m.main+fp -mthumb -O2 scan-assembler lsrs\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/union-2.c -march=armv8.1-m.main+fp -mthumb -O3 -g scan-assembler lsls\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 FAIL: gcc.target/arm/cmse/mainline/8_1m/union-2.c -march=armv8.1-m.main+fp -mthumb -O3 -g scan-assembler lsrs\t(r[3-9]|r10|fp|ip), \\1, #1.*blxns\t\\1 In all of the failures above, the problem is that GCC is now using lsr/lsl instructions rather than lsrs/lsls. For example: diff -u '--color=auto' -pruN before/bitfield-4-O2.s after/bitfield-4-O2.s --- before/bitfield-4-O2.s 2024-09-06 00:14:05.084343596 -0300 +++ after/bitfield-4-O2.s 2024-09-05 23:44:18.400186871 -0300 @@ -29,14 +29,14 @@ main: mov r0, #-1 mov r1, #-1 mov r2, #-1 - push {r4, lr} - sub sp, sp, #16 + push {lr} + sub sp, sp, #20 strd r0, [sp] str r2, [sp, #8] ldm sp, {r0, r1, r2} - mov r4, #2097152 - lsrs r4, r4, #1 - lsls r4, r4, #1 + mov ip, #2097152 + lsr ip, ip, #1 + lsl ip, ip, #1 push {r4, r5, r6, r7, r8, r9, r10, fp} vpush.64 {d8, d9, d10, d11, d12, d13, d14, d15} movw ip, #65535 I'm attaching the diff of all generated assembly files. These are the configure options used: /tmp/combined-tree-src/configure \ SHELL=/bin/bash \ --with-gnu-as \ --with-gnu-ld \ --enable-lto \ --enable-shared \ --without-included-gettext \ --enable-nls \ --with-system-zlib \ --disable-sjlj-exceptions \ --enable-gnu-unique-object \ --enable-linker-build-id \ --disable-libstdcxx-pch \ --enable-c99 \ --enable-clocale=gnu \ --enable-libstdcxx-debug \ --enable-long-long \ --with-isl=no \ --enable-threads=no \ --disable-multiarch \ --disable-multilib \ --with-mode=thumb \ --with-arch=armv8.1-m.main+mve.fp+fp.dp \ --with-float=hard \ --with-headers=yes \ --with-native-system-header-dir=/include \ --with-newlib \ --enable-checking=yes \ --disable-bootstrap \ --disable-gdb \ --enable-languages=c,c++,lto \ --prefix=/tmp/thumb-m55-hard-eabi \ --build=x86_64-pc-linux-gnu \ --host=x86_64-pc-linux-gnu \ --target=arm-eabi