public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: ksteege@dsrnet.com To: gcc-gnats@gcc.gnu.org Subject: c/5431: possible gcc 2.96 error in simple arithmetic statement w/ 16 & 32 bit values Date: Fri, 18 Jan 2002 18:36:00 -0000 [thread overview] Message-ID: <20020119023456.7061.qmail@sources.redhat.com> (raw) >Number: 5431 >Category: c >Synopsis: possible gcc 2.96 error in simple arithmetic statement w/ 16 & 32 bit values >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jan 18 18:36:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Kevin Steege >Release: GCC 2.96 >Organization: >Environment: Red Had Linux 7.1 >Description: Not sure if this is a true compiler bug or not, but the following problem occurred when we migrated to Linux RedHat 7.1 which came with gcc 2.96. The problem did not occur with RedHat 6.2 which came with gcc 2.91. The code line : Result = (((my_ushort + 2) * 2) - sizeof (my_8_struct) - 4) / 2; where Result is a unsigned 32 bit value, my_ushort is an unsigned 16 bit value set to 924, and my_8_struct is an 8 byte structure Produces the correct result with gcc 2.91 : (((my_ushort + 2) * 2) - sizeof (my_8_struct) - 4) / 2 = 920 = 0x398 But an incorrect value with gcc 2.96 : (((my_ushort + 2) * 2) - sizeof (my_8_struct) - 4) / 2 = 2147484568 = 0x80000398 Obviously there is a problem with the way the compiler casts the values between 16 bit and 32 bit integers, or at least with the way I believe the compiler should cast the values. >How-To-Repeat: Compile attached file mytest.c & run : gcc mytest.c ./a.out >Fix: The sample program contains several similar lines which work around the problem. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="mytest.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mytest.c" aW50IG1haW4gKCkKewogIHR5cGVkZWYgc3RydWN0IAogIHsKICAgIGNoYXIgQVs4XTsKICB9IG15 Xzhfc3RydWN0OwoKICB0eXBlZGVmIHN0cnVjdCAKICB7CiAgICBjaGFyIEFbNF07CiAgfSBteV80 X3N0cnVjdDsKCiAgdW5zaWduZWQgc2hvcnQgbXlfdXNob3J0OwogIHVuc2lnbmVkIGxvbmcgIG15 X3Vsb25nOwoKICB1bnNpZ25lZCBsb25nIFJlc3VsdDsKCiAgCiAgbXlfdXNob3J0ID0gOTI0Owog IG15X3Vsb25nICA9IDkyNDsKCiAgcHJpbnRmICgiKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiBURVNUIEJFR0lOICoqKioqKioqXG4iKTsKCgogIHByaW50ZiAoIm15X3Vz aG9ydCA9ICV1LCBteV91bG9uZyA9ICV1XG5zaXplb2YgKG15XzRfc3RydWN0KSA9ICV1LCAiCiAg ICAgICAgICAic2l6ZW9mIChteV84X3N0cnVjdCkgPSAldVxuIiwKICAgICAgICAgIG15X3VzaG9y dCwgbXlfdWxvbmcsIHNpemVvZiAobXlfNF9zdHJ1Y3QpLCBzaXplb2YgKG15Xzhfc3RydWN0KSk7 CgogIHByaW50ZiAoIlxuXG4gVEVTVElORyB3aXRoIG15X3VzaG9ydCAmIG15XzRfc3RydWN0IFxu Iik7CgogIFJlc3VsdCA9ICgoKG15X3VzaG9ydCArIDIpICogMikgLSBzaXplb2YgKG15XzRfc3Ry dWN0KSAtIDQpOwogIHByaW50ZiAoIigoKG15X3VzaG9ydCArIDIpICogMikgLSBzaXplb2YgKG15 XzRfc3RydWN0KSAtIDQpICAgICA9ICU0dSA9ICIKICAgICAgICAgICIweCVYXG4iLCBSZXN1bHQs IFJlc3VsdCk7CgogIFJlc3VsdCA9ICgoKG15X3VzaG9ydCArIDIpICogMikgLSBzaXplb2YgKG15 XzRfc3RydWN0KSAtIDQpIC8gMjsKICBwcmludGYgKCIoKChteV91c2hvcnQgKyAyKSAqIDIpIC0g c2l6ZW9mIChteV80X3N0cnVjdCkgLSA0KSAvIDIgPSAlNHUgPSAiCiAgICAgICAgICAiMHglWFxu IiwgUmVzdWx0LCBSZXN1bHQpOwoKICBSZXN1bHQgPSAoKChteV91c2hvcnQgKyAyKSAqIDIpIC0g NCAtIDQpIC8gMjsKICBwcmludGYgKCIoKChteV91c2hvcnQgKyAyKSAqIDIpIC0gNCAtIDQpIC8g MiAgICAgICAgICAgICAgICAgICAgPSAlNHUgPSAiCiAgICAgICAgICAiMHglWFxuIiwgUmVzdWx0 LCBSZXN1bHQpOwoKCiAgcHJpbnRmICgiXG5cbiBURVNUSU5HIHdpdGggbXlfdWxvbmcgJiBteV84 X3N0cnVjdCBcbiIpOwoKICBSZXN1bHQgPSAoKChteV91bG9uZyArIDIpICogMikgLSBzaXplb2Yg KG15Xzhfc3RydWN0KSAtIDQpOwogIHByaW50ZiAoIigoKG15X3Vsb25nICsgMikgKiAyKSAtIHNp emVvZiAobXlfOF9zdHJ1Y3QpIC0gNCkgICAgICA9ICU0dSA9ICIKICAgICAgICAgICIweCVYXG4i LCBSZXN1bHQsIFJlc3VsdCk7CgogIFJlc3VsdCA9ICgoKG15X3Vsb25nICsgMikgKiAyKSAtIHNp emVvZiAobXlfOF9zdHJ1Y3QpIC0gNCkgLyAyOwogIHByaW50ZiAoIigoKG15X3Vsb25nICsgMikg KiAyKSAtIHNpemVvZiAobXlfOF9zdHJ1Y3QpIC0gNCkgLyAyICA9ICU0dSA9ICIKICAgICAgICAg ICIweCVYXG4iLCBSZXN1bHQsIFJlc3VsdCk7CgogIFJlc3VsdCA9ICgoKG15X3Vsb25nICsgMikg KiAyKSAtIDggLSA0KSAvIDI7CiAgcHJpbnRmICgiKCgobXlfdWxvbmcgKyAyKSAqIDIpIC0gOCAt IDQpIC8gMiAgICAgICAgICAgICAgICAgICAgID0gJTR1ID0gIgogICAgICAgICAgIjB4JVhcbiIs IFJlc3VsdCwgUmVzdWx0KTsKCgogIHByaW50ZiAoIlxuXG4gVEVTVElORyB3aXRoIG15X3VzaG9y dCAmIG15Xzhfc3RydWN0IFxuIik7CgogIFJlc3VsdCA9ICgoKG15X3VzaG9ydCArIDIpICogMikg LSBzaXplb2YgKG15Xzhfc3RydWN0KSAtIDQpOwogIHByaW50ZiAoIigoKG15X3VzaG9ydCArIDIp ICogMikgLSBzaXplb2YgKG15Xzhfc3RydWN0KSAtIDQpICAgICA9ICU0dSA9ICIKICAgICAgICAg ICIweCVYXG4iLCBSZXN1bHQsIFJlc3VsdCk7CgogIFJlc3VsdCA9ICgoKG15X3VzaG9ydCArIDIp ICogMikgLSBzaXplb2YgKG15Xzhfc3RydWN0KSAtIDQpIC8gMjsKICBwcmludGYgKCIoKChteV91 c2hvcnQgKyAyKSAqIDIpIC0gc2l6ZW9mIChteV84X3N0cnVjdCkgLSA0KSAvIDIgPSAlNHUgPSAi CiAgICAgICAgICAiMHglWFxuIiwgUmVzdWx0LCBSZXN1bHQpOwoKICBSZXN1bHQgPSAoKChteV91 c2hvcnQgKyAyKSAqIDIpIC0gOCAtIDQpIC8gMjsKICBwcmludGYgKCIoKChteV91c2hvcnQgKyAy KSAqIDIpIC0gOCAtIDQpIC8gMiAgICAgICAgICAgICAgICAgICAgPSAlNHUgPSAiCiAgICAgICAg ICAiMHglWFxuIiwgUmVzdWx0LCBSZXN1bHQpOwpwcmludGYgKCIqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqIFRFU1QgRU5EICoqKioqKioqXG4iKTsKCnJldHVybiAwOwoK fQoKCg==
next reply other threads:[~2002-01-19 2:36 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-01-18 18:36 ksteege [this message] 2002-01-19 10:44 rodrigc
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=20020119023456.7061.qmail@sources.redhat.com \ --to=ksteege@dsrnet.com \ --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).