This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

optimization/9808: optimisation bug in (float*) to (int*) conversion


>Number:         9808
>Category:       optimization
>Synopsis:       optimisation bug in (float*) to (int*) conversion
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Feb 22 19:56:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     matze at braunis dot de
>Release:        3.2.1
>Organization:
>Environment:
gentoo linux, kernel 2.4.20, x86 pentium4, glibc 3.2.1
>Description:
The attached file fails when compiled with -O2. It also contains a workaround for the bug:

[matze at taylor] ~ > g++ qint.cpp
[matze at taylor] ~ > a.out
QInt of 255.900000: 255
QIntWorkaround of 255.900000: 255

[matze at taylor] ~ > g++ -O2 qint.cpp
[matze at taylor] ~ > a.out
QInt of 255.900000: -1052057600
QIntWorkaround of 255.900000: 255
>How-To-Repeat:
compile the file with -O2
>Fix:
a workaround is shown in the file
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="qint.cpp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="qint.cpp"

I2luY2x1ZGUgPHN0ZGlvLmg+CgovKiogXGZpbGUKICAgIFF1aWNrIGZsb2F0aW5nIHBvaW50IHRv
IGludGVnZXIgY29udmVyc2lvbnMuCiAgICA8cD4KICAgIFRoZXJlIGlzIGEgZ2VuZXJhbCB0cmlj
ayB0aGF0IGNhbiBiZSB1c2VkIG9uIGFsbCBGUFVzIHRoYXQgdXNlcyBJRUVFCiAgICBkb3VibGUt
cHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IG51bWJlciBmb3JtYXQgKHRoZW9yZXRpY2FsbHkgaXQg
c2hvdWxkCiAgICBjb3ZlciBhbGwgQ1BVcyB0aGF0IGhhdmUgYSAiZG91YmxlIiBkYXRhIHR5cGUg
b2YgNjQgYml0czsgaXQgaXMgYXBwbGljYWJsZQogICAgZm9yIG90aGVyIHR5cGVzIGFzIHdlbGws
IGJ1dCB5b3UgaGF2ZSB0byBmaWd1cmUgb3V0IHlvdXJzZWxmIGhvdyAtIGl0J3MKICAgIGVhc3kg
aWYgeW91IHVuZGVyc3RhbmQgZXZlcnl0aGluZyB0aGF0IGlzIHdyaXR0ZW4gYmVsb3cpIHRvIHF1
aWNrbHkKICAgIGNvbnZlcnQgbnVtYmVycyBmcm9tIGZsb2F0aW5nLXBvaW50IGZvcm1hdCB0byBp
bnRlZ2VyIGFuZCBmaXhlZC1wb2ludAogICAgZm9ybWF0cy4gTGV0J3MgdGFrZSB0aGUgImRvdWJs
ZSIgdHlwZSBmb3JtYXQgKG9uIHg4NiwgZS5nLiBsaXR0bGUtZW5kaWFuKToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKPHByZT4KIGJpdCAwICAgICAgICA4ICAgICAgICAxNiAgICAgICAyNCAgICAg
ICAzMiAgICAgICA0MCAgICAgICA0OCAgICAgICA1NiAgIHNpZ24KICAgICstLS0tLS0tLSstLS0t
LS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t
fCsKICAgIHxtbW1tbW1tbXxtbW1tbW1tbXxtbW1tbW1tbXxtbW1tbW1tbXxtbW1tbW1tbXxtbW1t
bW1tbXxtbW1tZWVlZXxlZWVlZWVlc3wKICAgICt8LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSst
LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS18fC0tLSstLS0tLS18LSsKICAgICBcLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBtYW50aXNzYSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0vXC1leHBv
bmVudC0vCjwvcHJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgSW4gdGhlIGZvbGxvd2lu
ZyB3ZSdsbCBwaWN0dXJlIG51bWJlcnMgYXMgKHMpbV5lLCBlLmcuICgwKTJeMSBpcyB0aGUKICAg
IG51bWJlciAnMicsICgxKTJeNSBtZWFucyBudW1iZXIgLTMyLgogICAgVGhpcyBtZWFucyB0aGF0
IHRoZSBudW1iZXIgIjEyNyIgd2lsbCBiZSByZXByZXNlbnRlZCBhcwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAo8cHJlPgogICAgKDApMl43ICsgMl42ICsgMl41ICsgLi4uICsgMl4wLCBvcgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgMDAwMDAwMDAuMDAwMDAwMDAuMDAwMDAwMDAuMDAwMDAw
MDAuMDAwMDAwMDAuMDAwMDAxMTEuMTExMXwxMTEwLjAwMDAwMDAwCjwvcHJlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgKHdlbGwsIGluIGdlbmVyYWwgZXhwb25lbnQgaXMgc3RvcmVkICsg
MHgzZmYgYnV0IHdlIHdpbGwgbm90IHRha2UgdGhpcwogICAgaW50byBhY2NvdW50Li4uIGNvbnNp
ZGVyIHdlJ2xsIGFsd2F5cyBzdWJ0cmFjdCAweDNmZiBmcm9tIGV4cG9uZW50KS4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgIFNvIG9ic2VydmUgc2V2ZXJhbCB0aGluZ3MuIEZpcnN0LCB0aGUg
ZXhwb25lbnQgaXMgMTExYiAoZS5nLiA3KSAtIHRoZQogICAgbW9zdCBzaWduaWZpY2FudCBwb3dl
ciBvZiB0d28gaW4gYWJvdmUgc2VyaWVzLiBOZXh0LCBvYnNlcnZlIHRoYXQgdGhlCiAgICBtYW50
aXNzYSBjb250YWlucyBqdXN0IDcgJzEnIGJpdHMgd2hpbGUgMjU1IGNvbnRhaW5zIDggJzEnIGJp
dHMuIFdlbGwsCiAgICB0aGUgdG9wbW9zdCBiaXQgaXMgYWx3YXlzIGNvbnNpZGVyZWQgJzEnIGV4
Y2VwdCBmb3IgdGhlIGNhc2Ugb2YgJ3plcm8nLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
Tm93IHdoYXQgaWYgd2UgYWRkLCBzYXksIDJeMjAgdG8gdGhlIGFib3ZlIG51bWJlciAoaS5lLiAy
NTUrMl4yMCk/CiAgICBUaGUgbW9zdCBzaWduaWZpY2FudCBwb3dlciBvZiB0d28gaXMgMjAgdGhl
biwgc28gYWxsIGJpdHMgd2l0aAogICAgbG93ZXIgc2lnbmlmaWNhbmNlIHdpbGwganVzdCBzaGlm
dCBsZWZ0IGJ5IDIwIGJpdHM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjxwcmU+CiAgICAoMCky
XjIwICsgMl43ICsgMl42ICsgMl41ICsgMl40ICsgMl4zICsgMl4yICsgMl4xICsgMl4wLCBvcgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgMDAwMDAwMDAuMDAwMDAwMDAuMDAwMDAwMDAuMDAw
MDAwMDAuMTExMTExMTEuMDAwMDAwMDAuMDAwMHwwMDEwLjEwMDAwMDAwCjwvcHJlPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgU28gd2hhdCB3ZSBzZWU/IE91ciBiZWxvdmVkIDI1NSBoYXMg
bW92ZWQgdG8gdGhlIGxlZnQgYW5kIHdlIGNhbiBqdXN0IHBpY2sKICAgIGl0IGJ5IHRha2luZyB0
aGUgZmlmdGggYnl0ZSBvZiB0aGUgZmxvYXRpbmctcG9pbnQgbnVtYmVyLiBTbyBpZiB3ZSBuZWVk
CiAgICB0byBjb252ZXJ0IGFueSBudW1iZXIgZnJvbSAwIHRvIDJeMjAtMSBmcm9tIGZsb2FyaW5n
LXBvaW50IGZvcm1hdCB0bwogICAgaW50ZWdlciBmb3JtYXQsIHdlIGNhbiBqdXN0IGFkZCAyXjIw
IHRvIGhpbSBhbmQgcGljayB0aGUgcmVzcGVjdGl2ZQogICAgYnl0ZXMgZnJvbSB0aGUgImRvdWJs
ZSIgdmFyaWFibGUuIElmIHdlIHdvdWxkIG5lZWQgYSBmaXhlZC1wb2ludCB2YWx1ZSwKICAgIHdl
IGFsc28gY2FuIHRha2UgdGhlIGJ5dGVzIHByaW9yIHRvIGludGVnZXIgdmFsdWUgKHRoZXkgd2ls
bCBjb250YWluCiAgICB0aGUgZnJhY3Rpb25hbCBwYXJ0KS4gU28gaWYgd2Ugd291bGQgbmVlZCBh
IDE2LjE2IGZvcm1hdCwgd2UgY2FuIGFkZAogICAgMl4yMCBhbmQgdGFrZSBiaXRzIDE2LTMxIChm
cmFjdGlvbmFsIHBhcnQpIGFuZCAyMy00OCAoaW50ZWdlciBwYXJ0KS4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgIE5vdyB3aGF0IHdlIHdpbGwgZG8gd2l0aCBuZWdhdGl2ZSBudW1iZXJzPyBU
aGUgcHJvYmxlbSBpcyB0aGF0IHdoZW4KICAgIHlvdSAnc2hpZnQnIGxlZnQgYW4gbmVnYXRpdmUg
bnVtYmVyIGJ5IGFkZGluZywgc2F5LCAyXjIwLCB0aGUgbW9zdAogICAgc2lnbmlmaWNhbnQgYml0
cyBhcmUgZmlsbGVkIHdpdGggJzEnIHJhdGhlciB0aGFuIHdpdGggJzAnIGJlY2F1c2UKICAgIHlv
dXIgbnVtYmVyIGlzIHN1YnRyYWN0ZWQgZnJvbSAyXjIwIHJhdGhlciB0aGFuIGFkZGVkLiBUaHVz
IDJeMjAtMQogICAgd2lsbCBsb29rIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
PHByZT4KICAgIDAwMDAwMDAwLjAwMDAwMDAwLjAwMDAwMDAwLjAwMDAwMDAwLjAxMTExMTExLjEx
MTExMTExLjExMTF8MTEwMC4xMDAwMDAwMAo8L3ByZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgIFRodXMgaWYgd2UnbGwgZ2V0IHRoZSBmaWZ0aCBieXRlIGFzIGJlZm9yZSwgd2UnbGwgZ2V0
ICctMicgcmF0aGVyIHRoYW4KICAgICctMScuIFNvIHdlIHdvdWxkIGhhdmUgdG8gY2hlY2sgd2hl
bmV2ZXIgd2Ugc2hvdWxkIHNoaWZ0IHRoZSByZXN1bHQKICAgIG9yIG5vdCBkZXBlbmRpbmcgb24g
aGlzIHNpZ24uIElmIHJvdW5kaW5nIG51bWJlciAoaW5zdGVhZCBvZiB0cnVuY2F0aW5nCiAgICB0
aGUgZnJhY3Rpb25hbCBwYXJ0KSBpcyBhY2NlcHRhYmxlLCB3ZSBjYW4gZG8gYW5vdGhlciB0cmlj
azogYWRkCiAgICAyXjIwICsgMl44LCBhbmQgYWZ0ZXIgdGFraW5nIHRoZSByZXF1aXJlZCBzdWJw
YXJ0IHN1YnRyYWN0IDJeOCBiYWNrLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgTWVhc3Vy
ZW1lbnRzIHNob3cgdGhhdCB0aGlzIHRyaWNrIGlzIGV2ZW4gZmFzdGVyIChhdCBsZWFzdCBvbiBQ
NSBhbmQKICAgIGFib3ZlKSB0aGFuIEZJU1RQIGNvbW1hbmQgKGV2ZW4gaWYgd2UgdXNlIHRoZSAo
Y29ycmVjdCkgcHJlc3VtcHRpb24KICAgIHRoYXQgRlBVIGlzIGluIHJvdW5kaW5nIG1vZGUgYnkg
ZGVmYXVsdCwgZS5nLiBubyBuZWVkIHRvIHRvZ2dsZSBGUFUKICAgIGNvbnRyb2wgd29yZCkuIFFS
b3VuZCBleGVjdXRlcyAyIGNsb2NrcyBvbiBDZWxlcm9uIHdoaWxlIEZJU1RQCiAgICBleGVjdXRl
cyAxMyBjbG9ja3MsIGkuZS4gYWJvdXQgNiB0aW1lcyBzbG93ZXIuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICBBbGwgc2FpZCBhYm92ZSBpcyB0cnVlIGZvciBhbGwgQ1BVIHR5cGVzIHRoYXQg
dXNlcyBzdGFuZGFyZCBJRUVFCiAgICBmb3JtYXQgZm9yICJkb3VibGUiIHR5cGUsIHdpdGggdGhl
IHJlc3BlY3RpdmUgY29ycmVjdGlvbnMgZm9yIGVuZGlhbmVzcy4KKi8KCiNkZWZpbmUgQ1NfTE9O
R19BVF9CWVRFKHgsYikgICAgKihsb25nICopKCgoY2hhciAqKSZ4KSArIGIpCgojZGVmaW5lIEZJ
U1RfTUFHSUNfUUlOVCAgICg2NTUzNi4wICogNjU1MzYuMCAqIDE2LjApCgpzdGF0aWMgaW5saW5l
IGxvbmcgUUludCAoZG91YmxlIGludmFsKQp7CiAgZG91YmxlIGR0ZW1wID0gRklTVF9NQUdJQ19R
SU5UICsgaW52YWw7CiAgLy8gTm90ZSB0aGF0IG9uIGJvdGggbG93LWVuZGlhbiAoeDg2KSBhbmQg
YmlnLWVuZGlhbiAobTY4aykgd2UgaGF2ZQogIC8vIHRvIHNoaWZ0IGJ5IHR3byBieXRlcy4gU28g
bm8gbmVlZCBmb3IgYW4gI2lmZGVmLgogIGxvbmcgcmVzdWx0ID0gQ1NfTE9OR19BVF9CWVRFIChk
dGVtcCwgMik7CiAgcmV0dXJuIHJlc3VsdCA8IDAgPyAocmVzdWx0ID4+IDEpICsgMSA6IHJlc3Vs
dDsKfQoKc3RhdGljIGlubGluZSBsb25nIFFJbnRXb3JrYXJvdW5kIChkb3VibGUgaW52YWwpCnsK
ICB1bmlvbiB7IGRvdWJsZSBkdGVtcDsgbG9uZyByZXN1bHQ7IH0geDsKCiAgeC5kdGVtcCA9IEZJ
U1RfTUFHSUNfUUlOVCArIGludmFsOwogIHgucmVzdWx0ID0gQ1NfTE9OR19BVF9CWVRFICh4LmR0
ZW1wLCAyKTsKICByZXR1cm4geC5yZXN1bHQgPCAwID8gKHgucmVzdWx0ID4+IDEpICsgMSA6IHgu
cmVzdWx0Owp9CgppbnQgbWFpbigpCnsKCXByaW50ZiAoIlFJbnQgb2YgJWY6ICVkXG4iLCAyNTUu
OSwgUUludCgyNTUuOSkpOwoJcHJpbnRmICgiUUludFdvcmthcm91bmQgb2YgJWY6ICVkXG4iLCAy
NTUuOSwgUUludFdvcmthcm91bmQoMjU1LjkpKTsKCXJldHVybiAwOwp9Cg==


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]