public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/100107] New: [10 Regression] powerpc: redundant .machine directive clobbers CPU flags to assembler
@ 2021-04-16  1:46 rin at NetBSD dot org
  2021-04-16  7:33 ` [Bug target/100107] [10/11 " rguenth at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: rin at NetBSD dot org @ 2021-04-16  1:46 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100107

            Bug ID: 100107
           Summary: [10 Regression] powerpc: redundant .machine directive
                    clobbers CPU flags to assembler
           Product: gcc
           Version: 10.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rin at NetBSD dot org
  Target Milestone: ---

Created attachment 50608
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50608&action=edit
Fix for this regression

GCC10 miscompiles inline assembler codes for 403/405 processors:

% cat mfpid.c
unsigned mfpid(void)
{
        unsigned pid;
        __asm volatile("mfpid %0" : "=r"(pid));
        return pid;
}
% gcc10 -m403 -c mfpid.c -o mfpid10.o && objdump -D403 mfpid10.o > mfpid10.dump
% gcc9  -m403 -c mfpid.c -o mfpid9.o  && objdump -D403 mfpid9.o  > mfpid9.dump
% diff -u mfpid9.dump mfpid10.dump
...(snip)...
-   c:  7d 31 ea a6     mfpid   r9
+   c:  7d 30 0a a6     mfspr   r9,48
...(snip)...

This is because redundant .machine directive, introduced by commit
2d94f7dea9c73ef3c116a0ddc722724578a860fe:

https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=2d94f7dea9c73ef3c116a0ddc722724578a860fe

clobbers CPU flags passed to assembler (-m403 in this case). Actually, diff
b/w .S files generated by GCC9 and 10 reads:

% diff -u mfpid9.S mfpid10.S
--- mfpid9.S    2021-04-16 10:21:47.688171347 +0900
+++ mfpid10.S   2021-04-16 10:21:37.262150628 +0900
@@ -1,4 +1,5 @@
        .file   "mfpid.c"
+       .machine ppc
        .section        ".text"
        .align 2
        .globl mfpid
...(snip)...

By reverting that commit with attached patch, this file can be successfully
compiled again with GCC10.

----

% gcc10 -v
Using built-in specs.
COLLECT_GCC=/build/tools.broken/bin/powerpc--netbsd-gcc
COLLECT_LTO_WRAPPER=/build/tools.broken/libexec/gcc/powerpc--netbsd/10.3.0/lto-wrapper
Target: powerpc--netbsd
Configured with: /usr/src/tools/gcc/../../external/gpl3/gcc/dist/configure
--target=powerpc--netbsd --enable-long-long --enable-threads
--with-bugurl=http://www.NetBSD.org/support/send-pr.html
--with-pkgversion='NetBSD nb1 20210411' --with-system-zlib --without-isl
--enable-__cxa_atexit --enable-libstdcxx-time=rt --enable-libstdcxx-threads
--with-diagnostics-color=auto-if-env --with-default-libstdcxx-abi=new
--with-sysroot=/build/dest/evbppc-powerpc --with-mpc=/build/tools.broken
--with-mpfr=/build/tools.broken --with-gmp=/build/tools.broken --disable-nls
--disable-multilib --program-transform-name='s,^,powerpc--netbsd-,'
--enable-languages='c c++ objc' --prefix=/build/tools.broken
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.3.0 (NetBSD nb1 20210411)

----

% gcc9 -v
Using built-in specs.
COLLECT_GCC=/build/tools.9/bin/powerpc--netbsd-gcc
COLLECT_LTO_WRAPPER=/build/tools.9/libexec/gcc/powerpc--netbsd/9.3.0/lto-wrapper
Target: powerpc--netbsd
Configured with: /usr/src/tools/gcc/../../external/gpl3/gcc.old/dist/configure
--target=powerpc--netbsd --enable-long-long --enable-threads
--with-bugurl=http://www.NetBSD.org/support/send-pr.html
--with-pkgversion='NetBSD nb1 20200907' --with-system-zlib --without-isl
--enable-__cxa_atexit --enable-libstdcxx-time=rt --enable-libstdcxx-threads
--with-diagnostics-color=auto-if-env --with-default-libstdcxx-abi=new
--with-sysroot=/build/dest/evbppc-powerpc --with-mpc=/build/tools.9
--with-mpfr=/build/tools.9 --with-gmp=/build/tools.9 --disable-nls
--disable-multilib --program-transform-name='s,^,powerpc--netbsd-,'
--enable-languages='c c++ objc' --prefix=/build/tools.9
Thread model: posix
gcc version 9.3.0 (NetBSD nb1 20200907)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug target/100107] [10/11 Regression] powerpc: redundant .machine directive clobbers CPU flags to assembler
  2021-04-16  1:46 [Bug target/100107] New: [10 Regression] powerpc: redundant .machine directive clobbers CPU flags to assembler rin at NetBSD dot org
@ 2021-04-16  7:33 ` rguenth at gcc dot gnu.org
  2022-06-28 10:44 ` [Bug target/100107] [10/11/12/13 " jakub at gcc dot gnu.org
  2022-07-24 10:57 ` rin at NetBSD dot org
  2 siblings, 0 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2021-04-16  7:33 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100107

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |10.4
            Summary|[10 Regression] powerpc:    |[10/11 Regression] powerpc:
                   |redundant .machine          |redundant .machine
                   |directive clobbers CPU      |directive clobbers CPU
                   |flags to assembler          |flags to assembler

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug target/100107] [10/11/12/13 Regression] powerpc: redundant .machine directive clobbers CPU flags to assembler
  2021-04-16  1:46 [Bug target/100107] New: [10 Regression] powerpc: redundant .machine directive clobbers CPU flags to assembler rin at NetBSD dot org
  2021-04-16  7:33 ` [Bug target/100107] [10/11 " rguenth at gcc dot gnu.org
@ 2022-06-28 10:44 ` jakub at gcc dot gnu.org
  2022-07-24 10:57 ` rin at NetBSD dot org
  2 siblings, 0 replies; 4+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-06-28 10:44 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100107

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|10.4                        |10.5

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 10.4 is being released, retargeting bugs to GCC 10.5.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug target/100107] [10/11/12/13 Regression] powerpc: redundant .machine directive clobbers CPU flags to assembler
  2021-04-16  1:46 [Bug target/100107] New: [10 Regression] powerpc: redundant .machine directive clobbers CPU flags to assembler rin at NetBSD dot org
  2021-04-16  7:33 ` [Bug target/100107] [10/11 " rguenth at gcc dot gnu.org
  2022-06-28 10:44 ` [Bug target/100107] [10/11/12/13 " jakub at gcc dot gnu.org
@ 2022-07-24 10:57 ` rin at NetBSD dot org
  2 siblings, 0 replies; 4+ messages in thread
From: rin at NetBSD dot org @ 2022-07-24 10:57 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100107

Rin Okuyama <rin at NetBSD dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |FIXED

--- Comment #2 from Rin Okuyama <rin at NetBSD dot org> ---
The problem has been fixed differently for GCC 10.4:
- master:
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=77eccbf39ed55297802bb66dff5f62507a7239e3
- gcc-10:
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=6142d65f4f528067f31e86bb97c07a661f2d66e7

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-07-24 10:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-16  1:46 [Bug target/100107] New: [10 Regression] powerpc: redundant .machine directive clobbers CPU flags to assembler rin at NetBSD dot org
2021-04-16  7:33 ` [Bug target/100107] [10/11 " rguenth at gcc dot gnu.org
2022-06-28 10:44 ` [Bug target/100107] [10/11/12/13 " jakub at gcc dot gnu.org
2022-07-24 10:57 ` rin at NetBSD dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).