public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/10684: register variable update disappears when using -O
@ 2003-05-08 16:06 Joerg-Cyril.Hoehle
  0 siblings, 0 replies; only message in thread
From: Joerg-Cyril.Hoehle @ 2003-05-08 16:06 UTC (permalink / raw)
  To: gcc-gnats; +Cc: Sam Steingold, Bruno Haible

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 4979 bytes --]


>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=


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-05-08 16:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-08 16:06 c/10684: register variable update disappears when using -O Joerg-Cyril.Hoehle

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).