From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7514 invoked by alias); 8 May 2003 16:06:02 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 7437 invoked by uid 71); 8 May 2003 16:06:01 -0000 Resent-Date: 8 May 2003 16:06:01 -0000 Resent-Message-ID: <20030508160601.7436.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, Sam Steingold , Bruno Haible Resent-Reply-To: gcc-gnats@gcc.gnu.org, Joerg-Cyril.Hoehle@T-Systems.com Received: (qmail 4874 invoked by uid 48); 8 May 2003 16:04:22 -0000 Message-Id: <20030508160422.4873.qmail@sources.redhat.com> Date: Thu, 08 May 2003 16:06:00 -0000 From: Joerg-Cyril.Hoehle@T-Systems.com Reply-To: Joerg-Cyril.Hoehle@T-Systems.com To: gcc-gnats@gcc.gnu.org Cc: Sam Steingold , Bruno Haible X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) X-GNATS-Notify: Sam Steingold , Bruno Haible Subject: c/10684: register variable update disappears when using -O X-SW-Source: 2003-05/txt/msg00625.txt.bz2 List-Id: >Number: 10684 >Category: c >Synopsis: register variable update disappears when using -O >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Thu May 08 16:06:01 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Jörg-Cyril Höhle >Release: 3.2 (also seen with 3.0) >Organization: >Environment: Linux sql-server 2.4.19-4GB #1 Fri Sep 13 13:14:56 UTC 2002 i686 unknown Suse-Linux 8.1, using binary distribution of gcc from CD-ROM. $ gcc -v Reading specs from /usr/lib/gcc-lib/i486-suse-linux/3.2/specs Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --enable-languages=c,c++,f77,objc,java,ada --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i486-suse-linux Thread model: posix gcc version 3.2 [Bug was also seen for 3.0] >Description: Using -O2 or -O1, a case is exhibited where an update to a global register variable disappears from the assembly output. >How-To-Repeat: In the attached program the function convert_from_foreign_array_fill() is miscompiled. $ gcc -O0 bugO.c; a.out ; echo $? 0 $ gcc -O2 bugO.c; a.out ; echo $? 1 Please look at the code generated by gcc -O2 -S bugO.c for convert_from_foreign_array_fill() and search for lines matching ebx. You'll find three of them, but 4 in the -O0 case. The addl $4, %ebx disappeared. That was the update part of pushSTACK(). Please add this sample program to your testsuite. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-unknown-content-type-cfile; name="bugO.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bugO.c" dHlwZWRlZiB2b2lkICogb2JqZWN0OwpyZWdpc3RlciBvYmplY3QqIFNUQUNLIF9fYXNtX18oIiVl YngiKTsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBjaGFydDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n IHVpbnRMOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludEI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg ICBvYmplY3QgZW5jX21ic3Rvd2NzOwp9IGVuY29kaW5nX3Q7CnR5cGVkZWYgZW5jb2RpbmdfdCAq IEVuY29kaW5nOwoKI2RlZmluZSBUaGVFbmNvZGluZyhvYmopICAgKChFbmNvZGluZykoKHVpbnRM KShvYmopLTFVTCkpCiNkZWZpbmUgTyh4KSAgICAgICAgICAgICAgICgob2JqZWN0KSgodWludEwp KCYgeCkrMVVMKSkKI2RlZmluZSBUaGVQc2V1ZG9mdW4ob2JqKSAgKChjb25zdCB2b2lkKikob2Jq KSkKCmV4dGVybiB2b2lkIG15bWJzdG93Y3NfKG9iamVjdCwgb2JqZWN0LCBjb25zdCB1aW50Qioq LCBjb25zdCB1aW50QiosCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJ0KiosIGNoYXJ0Kik7 CiNkZWZpbmUgRW5jb2RpbmdfbWJzdG93Y3MoZW5jb2RpbmcpIFwKICAoKHZvaWQgKCopIChvYmpl Y3QsIG9iamVjdCwgY29uc3QgdWludEIqKiwgY29uc3QgdWludEIqLCBjaGFydCoqLCBjaGFydCop KVwKICAgVGhlUHNldWRvZnVuKFRoZUVuY29kaW5nKGVuY29kaW5nKS0+ZW5jX21ic3Rvd2NzKSkK CmVuY29kaW5nX3QgZm9yZWlnbl9lbmNvZGluZyA9CiB7IChvYmplY3QpJm15bWJzdG93Y3NfIH07 CgpvYmplY3QgY29udmVydF9mcm9tX2ZvcmVpZ25fYXJyYXlfZmlsbCAob2JqZWN0IGVsdHlwZSwg dWludEwgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVj dCBhcnJheSwgY29uc3Qgdm9pZCogZGF0YSk7Cm9iamVjdCBjb252ZXJ0X2Zyb21fZm9yZWlnbl9h cnJheV9maWxsKGVsdHlwZSxzaXplLGFycmF5LGRhdGEpCiAgICBvYmplY3QgZWx0eXBlOwogICAg dWludEwgc2l6ZTsKICAgIG9iamVjdCBhcnJheTsKICAgIGNvbnN0IHZvaWQqIGRhdGE7CnsKICAg IGlmIChzaXplID4gMCkgewogICAgICAgIGNvbnN0IHVpbnRCKiBwdHIxID0gKGNvbnN0IHVpbnRC KilkYXRhOwogICAgICAgIC8vIHB1c2hTVEFDSyhhcnJheSk7CiAgICAgICAgU1RBQ0tbMF0gPSBh cnJheTsgU1RBQ0sgKz0gMTsKICAgICAgICB7CiAgICAgICAgICAgIG9iamVjdCBlbmNvZGluZyA9 IE8oZm9yZWlnbl9lbmNvZGluZyk7CiAgICAgICAgICAgIGNoYXJ0IHRtcGJ1ZltzaXplXTsgLy8g dmFyaWFibGUgc2l6ZSBhbGxvY2EoKQogICAgICAgICAgICBjaGFydCogcHRyMiA9ICZ0bXBidWZb MF07CiAgICAgICAgICAgIEVuY29kaW5nX21ic3Rvd2NzKGVuY29kaW5nKShlbmNvZGluZywob2Jq ZWN0KTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHRyMSxwdHIx K3NpemUsJnB0cjIscHRyMitzaXplKTsKICAgICAgICAgICAgLy8gYXJyYXkgPSBwb3BTVEFDSygp OwogICAgICAgICAgICBTVEFDSyAtPSAxOyBhcnJheSA9IFNUQUNLWzBdOwogICAgICAgIH0KICAg IH0KICAgIHJldHVybiBhcnJheTsKfQoKaW50IG1haW4gKCkKewogICAgaW50IEE7CiAgICBvYmpl Y3QgYSA9ICZBOwogICAgaW50IEM7CiAgICBvYmplY3QgYyA9ICZDOwogICAgb2JqZWN0IFNUQUNL X1NQQUNFWzVdID0geyBhLCBjLCAwLCAwIH07CiAgICBvYmplY3QqIHNhdmVkX1NUQUNLOwogICAg dWludEIgbXlkYXRhWzRdID0gezEyMywxMjQsMTI1LDEyNn07CiAgICBvYmplY3QgcmVhbGxvY2F0 ZWQ7CiAgICBpbnQgZXhpdGNvZGU7CgogICAgc2F2ZWRfU1RBQ0sgPSBTVEFDSzsKICAgIFNUQUNL ID0gJlNUQUNLX1NQQUNFWzJdOwoKICAgIHJlYWxsb2NhdGVkID0KICAgICAgICBjb252ZXJ0X2Zy b21fZm9yZWlnbl9hcnJheV9maWxsKChvYmplY3QpMCwzLGEsbXlkYXRhKTsKCiAgICBleGl0Y29k ZSA9IChTVEFDSyA9PSAmU1RBQ0tfU1BBQ0VbMl0gJiYgcmVhbGxvY2F0ZWQgPT0gYSA/IDAgOiAx KTsKCiAgICBTVEFDSyA9IHNhdmVkX1NUQUNLOwogICAgcmV0dXJuIGV4aXRjb2RlOwp9Cgp2b2lk IG15bWJzdG93Y3NfKG9iamVjdCBlbmNvZGluZywgb2JqZWN0IHN0cmVhbSwKICAgICAgICAgICAg ICAgICBjb25zdCB1aW50QiogKnNyY3AsIGNvbnN0IHVpbnRCKiBzcmNlbmQsCiAgICAgICAgICAg ICAgICAgY2hhcnQqICpkZXN0cCwgY2hhcnQqIGRlc3RlbmQpCnsgKnNyY3AgPXNyY2VuZDsgKmRl c3RwID0gZGVzdGVuZDsgfQo=