public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "iains at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug target/100152] [10.3, 11, 12 Regression] [Darwin, X86] used caller-saved register not preserved across a call. Date: Thu, 22 Apr 2021 10:28:47 +0000 [thread overview] Message-ID: <bug-100152-4-YbWsz0iTru@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-100152-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100152 Iain Sandoe <iains at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target|x86_64-apple-darwin19.6.0 |x86_64-apple-darwin* Summary|Possible 10.3 bad code |[10.3, 11, 12 Regression] |generation regression from |[Darwin, X86] used |10.2/9.3 on Mac OS 10.15.7 |caller-saved register not |(Catalina) |preserved across a call. Known to fail| |10.3.0 Target Milestone|--- |10.4 --- Comment #24 from Iain Sandoe <iains at gcc dot gnu.org> --- O1: movl $0, %ebx L756: movl 0(%rbp,%rbx,4), %esi movq %r14, %rdi call ____UTF_8_put movq %rbx, %rax addq $1, %rbx cmpq %rax, %r13 jne L756 works OK because %rbx is callee saved. ---- O2: xorl %r10d, %r10d .p2align 4,,10 .p2align 3 L938: movl 0(%rbp,%r10,4), %esi call ____UTF_8_put movq %r10, %rax addq $1, %r10 cmpq %rax, %r12 jne L938 fails because %r10 is not callee saved and is clobbered by the lazy symbol resolver. 10-2 uses rbx at O2, and so does Linux (it is of course hard to be 100% sure that the same problem "could not occur" on other platforms; there is relatively little Darwin-specific code in the x86 backend, especially for x86_64). I did see a fail [wrong code] with 11.1 (and would expect that to be present in master too) - whether the code crashes will depend on which reg happens to be used - e.g. r8 could survive the call (even tho it is not saved) but r10 will always be clobbered by the lazy symbol resolver. A workaround is to build c_intf.o with -O1. Unfortunately, the configuration for the project does not allow selection of the RTS optimisation level - it is jammed on at the highest level found. Adding or modifying a rule for that object will work in the short-term. Locally, I added a --enable-c-opt-rts to allow testing, you're welcome to that patch if it's helpful. Next will be to try and bisect to find the change that caused this - but obv. that is not going to be done before 10.4 / 11.2 so the workaround is probably needed.
next prev parent reply other threads:[~2021-04-22 10:28 UTC|newest] Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-20 13:48 [Bug target/100152] New: Possible 10.3 bad code generation regression from 10.2/9.3 on Mac OS 10.15.7 (Catalina) lucier at math dot purdue.edu 2021-04-20 13:48 ` [Bug target/100152] " lucier at math dot purdue.edu 2021-04-20 13:50 ` lucier at math dot purdue.edu 2021-04-20 14:33 ` iains at gcc dot gnu.org 2021-04-20 14:36 ` iains at gcc dot gnu.org 2021-04-20 14:40 ` lucier at math dot purdue.edu 2021-04-20 14:43 ` iains at gcc dot gnu.org 2021-04-20 14:58 ` lucier at math dot purdue.edu 2021-04-20 15:02 ` iains at gcc dot gnu.org 2021-04-20 15:09 ` lucier at math dot purdue.edu 2021-04-20 15:13 ` lucier at math dot purdue.edu 2021-04-20 15:17 ` iains at gcc dot gnu.org 2021-04-20 15:24 ` lucier at math dot purdue.edu 2021-04-20 17:22 ` lucier at math dot purdue.edu 2021-04-21 4:27 ` gabravier at gmail dot com 2021-04-21 8:52 ` iains at gcc dot gnu.org 2021-04-21 13:17 ` lucier at math dot purdue.edu 2021-04-21 15:32 ` iains at gcc dot gnu.org 2021-04-21 18:12 ` lucier at math dot purdue.edu 2021-04-21 18:18 ` iains at gcc dot gnu.org 2021-04-21 18:29 ` iains at gcc dot gnu.org 2021-04-21 20:00 ` iains at gcc dot gnu.org 2021-04-21 20:38 ` iains at gcc dot gnu.org 2021-04-21 23:24 ` lucier at math dot purdue.edu 2021-04-22 10:28 ` iains at gcc dot gnu.org [this message] 2021-04-22 12:54 ` [Bug target/100152] [10.3, 11, 12 Regression] [Darwin, X86] used caller-saved register not preserved across a call lucier at math dot purdue.edu 2021-04-22 14:35 ` feeley at iro dot umontreal.ca 2021-04-22 23:13 ` [Bug target/100152] [10.3, 11, 12 Regression] " iains at gcc dot gnu.org 2021-04-23 0:32 ` iains at gcc dot gnu.org 2021-04-23 6:51 ` iains at gcc dot gnu.org 2021-04-23 8:13 ` [Bug target/100152] [10/11/12 " rguenth at gcc dot gnu.org 2021-04-23 8:32 ` iains at gcc dot gnu.org 2021-04-23 8:48 ` iains at gcc dot gnu.org 2021-04-23 8:54 ` rguenth at gcc dot gnu.org 2021-04-23 8:58 ` rguenth at gcc dot gnu.org 2021-04-23 9:05 ` rguenth at gcc dot gnu.org 2021-04-23 9:09 ` iains at gcc dot gnu.org 2021-04-23 11:02 ` rguenth at gcc dot gnu.org 2021-04-23 12:34 ` iains at gcc dot gnu.org 2021-04-23 12:57 ` rguenth at gcc dot gnu.org 2021-04-23 12:58 ` rguenth at gcc dot gnu.org 2021-04-23 13:13 ` iains at gcc dot gnu.org 2021-04-24 12:41 ` iains at gcc dot gnu.org 2021-04-24 12:45 ` cvs-commit at gcc dot gnu.org 2021-04-24 18:45 ` iains at gcc dot gnu.org 2021-05-02 15:36 ` iains at gcc dot gnu.org 2021-05-03 7:54 ` iains at gcc dot gnu.org 2021-05-09 1:57 ` lucier at math dot purdue.edu 2021-05-09 7:25 ` iains at gcc dot gnu.org 2021-05-09 15:43 ` lucier at math dot purdue.edu 2021-05-09 19:22 ` iains at gcc dot gnu.org 2021-05-09 20:00 ` lucier at math dot purdue.edu 2021-05-09 22:36 ` iains at gcc dot gnu.org 2021-05-11 7:48 ` iains at gcc dot gnu.org 2021-05-13 3:35 ` lucier at math dot purdue.edu 2021-05-14 14:04 ` jakub at gcc dot gnu.org 2021-07-09 16:42 ` cvs-commit at gcc dot gnu.org 2021-07-20 6:52 ` cvs-commit at gcc dot gnu.org 2021-07-20 7:00 ` [Bug target/100152] [10 " iains at gcc dot gnu.org 2021-07-22 15:21 ` lucier at math dot purdue.edu 2022-05-29 19:13 ` cvs-commit at gcc dot gnu.org 2022-05-29 19:25 ` iains at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-100152-4-YbWsz0iTru@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).