public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: bagnara@cs.unipr.it To: gcc-gnats@gcc.gnu.org Cc: abramo.bagnara@libero.it Subject: optimization/8829: Over-optimization at -O2 and above (affecting GLIBC macros) Date: Thu, 05 Dec 2002 13:26:00 -0000 [thread overview] Message-ID: <20021205212045.5441.qmail@sources.redhat.com> (raw) >Number: 8829 >Category: optimization >Synopsis: Over-optimization at -O2 and above (affecting GLIBC macros) >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Thu Dec 05 13:26:00 PST 2002 >Closed-Date: >Last-Modified: >Originator: Roberto Bagnara >Release: 3.2.1 >Organization: >Environment: RedHat 8.0 $ uname -a Linux zoltan.unisuv.it 2.4.20 #33 Sun Dec 1 21:23:01 CET 2002 i686 athlon i386 GNU/Linux $ gcc -v Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2.1/specs Configured with: ../gcc-3.2.1/configure --prefix=/usr/local Thread model: posix gcc version 3.2.1 >Description: With -O2, gcc removes instructions that should not be removed. >How-To-Repeat: Compile the attached file, bug.cc, with $ gcc -S -O2 bug.c and notice that the instructions for swapping the bytes have been removed from get_float32() while, interestingly, they have not been removed from get_int32(). Notice also that, if the call to q(v) is uncommented from get_float32(), the over-optimization goes away. It is perhaps worth noticing that the macros in bug.c come from GLIBC. Here is the file bug.s that I obtain from bug.c (untouched) with the compilation command above: .file "bug.c" .text .p2align 4,,15 .globl get_float32 .type get_float32,@function get_float32: pushl %ebp movl %esp, %ebp subl $4, %esp movl 8(%ebp), %eax flds (%eax) movl %ebp, %esp popl %ebp ret .Lfe1: .size get_float32,.Lfe1-get_float32 .p2align 4,,15 .globl get_int32 .type get_int32,@function get_int32: pushl %ebp movl %esp, %ebp subl $4, %esp movl 8(%ebp), %eax movl (%eax), %eax movl %eax, -4(%ebp) movl %ebp, %esp #APP rorw $8, %ax;rorl $16, %eax;rorw $8, %ax #NO_APP popl %ebp ret .Lfe2: .size get_int32,.Lfe2-get_int32 .ident "GCC: (GNU) 3.2.1" >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bug.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bug.c" Ci8qIFN3YXAgYnl0ZXMgaW4gMzIgYml0IHZhbHVlLiAgKi8KI2RlZmluZSBfX2Jzd2FwX2NvbnN0 YW50XzMyKHgpIFwKICAgICAoKCgoeCkgJiAweGZmMDAwMDAwKSA+PiAyNCkgfCAoKCh4KSAmIDB4 MDBmZjAwMDApID4+ICA4KSB8CQkgICAgICBcCiAgICAgICgoKHgpICYgMHgwMDAwZmYwMCkgPDwg IDgpIHwgKCgoeCkgJiAweDAwMDAwMGZmKSA8PCAyNCkpCgojaWYgZGVmaW5lZCBfX0dOVUNfXyAm JiBfX0dOVUNfXyA+PSAyCi8qIFRvIHN3YXAgdGhlIGJ5dGVzIGluIGEgd29yZCB0aGUgaTQ4NiBw cm9jZXNzb3JzIGFuZCB1cCBwcm92aWRlIHRoZQogICBgYnN3YXAnIG9wY29kZS4gIE9uIGkzODYg d2UgaGF2ZSB0byB1c2UgdGhyZWUgaW5zdHJ1Y3Rpb25zLiAgKi8KIyBpZiAhZGVmaW5lZCBfX2k0 ODZfXyAmJiAhZGVmaW5lZCBfX3BlbnRpdW1fXyAmJiAhZGVmaW5lZCBfX3BlbnRpdW1wcm9fXwoj ICBkZWZpbmUgX19ic3dhcF8zMih4KQkJCQkJCQkgICAgICBcCiAgICAgKF9fZXh0ZW5zaW9uX18J CQkJCQkJICAgICAgXAogICAgICAoeyByZWdpc3RlciB1bnNpZ25lZCBpbnQgX192LCBfX3ggPSAo eCk7CQkJCSAgICAgIFwKCSBpZiAoX19idWlsdGluX2NvbnN0YW50X3AgKF9feCkpCQkJCSAgICAg IFwKCSAgIF9fdiA9IF9fYnN3YXBfY29uc3RhbnRfMzIgKF9feCk7CQkJCSAgICAgIFwKCSBlbHNl CQkJCQkJCQkgICAgICBcCgkgICBfX2FzbV9fICgicm9ydyAkOCwgJXcwOyIJCQkJCSAgICAgIFwK CQkgICAgInJvcmwgJDE2LCAlMDsiCQkJCQkgICAgICBcCgkJICAgICJyb3J3ICQ4LCAldzAiCQkJ CQkgICAgICBcCgkJICAgIDogIj1yIiAoX192KQkJCQkJICAgICAgXAoJCSAgICA6ICIwIiAoX194 KQkJCQkJCSAgICAgIFwKCQkgICAgOiAiY2MiKTsJCQkJCQkgICAgICBcCgkgX192OyB9KSkKIyBl bHNlCiMgIGRlZmluZSBfX2Jzd2FwXzMyKHgpIFwKICAgICAoX19leHRlbnNpb25fXwkJCQkJCQkg ICAgICBcCiAgICAgICh7IHJlZ2lzdGVyIHVuc2lnbmVkIGludCBfX3YsIF9feCA9ICh4KTsJCQkJ ICAgICAgXAoJIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX194KSkJCQkJICAgICAgXAoJICAg X192ID0gX19ic3dhcF9jb25zdGFudF8zMiAoX194KTsJCQkJICAgICAgXAoJIGVsc2UJCQkJCQkJ CSAgICAgIFwKCSAgIF9fYXNtX18gKCJic3dhcCAlMCIgOiAiPXIiIChfX3YpIDogIjAiIChfX3gp KTsJCSAgICAgIFwKCSBfX3Y7IH0pKQojIGVuZGlmCiNlbHNlCiMgZGVmaW5lIF9fYnN3YXBfMTYo eCkgXAogICAgIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKICAgICAgKHsgcmVnaXN0ZXIg dW5zaWduZWQgaW50IF9feCA9ICh4KTsgX19ic3dhcF9jb25zdGFudF8zMiAoX194KTsgfSkpCiNl bmRpZgoKc3RhdGljIGlubGluZSB2b2lkIHN3YXBfZmxvYXQzMihmbG9hdCogcCkKewoJKihpbnQq KXAgPSBfX2Jzd2FwXzMyKCooaW50KilwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHN3YXBfaW50 MzIoaW50KiBwKQp7CgkqKGludCopcCA9IF9fYnN3YXBfMzIoKihpbnQqKXApOwp9CgpmbG9hdCBn ZXRfZmxvYXQzMih2b2lkICpwZGF0YSkKewoJZmxvYXQgdiA9ICooZmxvYXQqKXBkYXRhOwoJc3dh cF9mbG9hdDMyKCZ2KTsKLy8JcSh2KTsKCXJldHVybiB2Owp9CgkJCmludCBnZXRfaW50MzIodm9p ZCAqcGRhdGEpCnsKCWludCB2ID0gKihpbnQqKXBkYXRhOwoJc3dhcF9pbnQzMigmdik7Ci8vCXEo dik7CglyZXR1cm4gdjsKfQoJCQo=
next reply other threads:[~2002-12-05 21:26 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-12-05 13:26 bagnara [this message] 2002-12-05 14:46 Falk Hueffner 2002-12-10 14:22 bangerth
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=20021205212045.5441.qmail@sources.redhat.com \ --to=bagnara@cs.unipr.it \ --cc=abramo.bagnara@libero.it \ --cc=gcc-gnats@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).