c++/811: g++/i686-pc-linux-gnu: -O0 generate bad code (faulty temporary ?)
homann@pb.izm.fhg.de
homann@pb.izm.fhg.de
Wed Nov 15 06:06:00 GMT 2000
>Number: 811
>Category: c++
>Synopsis: g++/i686-pc-linux-gnu: -O0 generate bad code (faulty temporary ?)
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Nov 15 06:06:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator: Ulrich Homann
>Release: gcc-2.7.2.3 up to gcc-2.92.2 but not redhat gcc-2.96 (gcc-20001113 didn't work for me)
>Organization:
>Environment:
debian potato: linux 2.2.16, glibc 2.1.3
Pentium III
-- or --
Redhat 6? and AMD-K7
>Description:
Attached File miscompiles wenn disabling optimisation (-O0)
on Intel-PCs:
> g++ -O0 point_bug.cc -o point_bug && ./point_bug
p1: (3,4) p2: (5,6)
((p1+p2)/2): (4,0)
> g++ -O1 point_bug.cc -o point_bug && ./point_bug
p1: (3,4) p2: (5,6)
((p1+p2)/2): (4,5)
Introducing an explizit temporary avoid this Problem:
Point tmp=p1+p2; tmp/=2;
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-c++src; name="point_bug.cc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="point_bug.cc"
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IFBvaW50IHsKCWRvdWJsZSB4OwoJZG91YmxlIHk7
CgkKCVBvaW50ICZvcGVyYXRvcis9KFBvaW50IGNvbnN0ICZwKSB7CgkJeCArPSBwLng7CgkJeSAr
PSBwLnk7CgkJcmV0dXJuICp0aGlzOwoJfQoJCglQb2ludCAmb3BlcmF0b3IvPShkb3VibGUgZCkg
ewoJCXggLz0gZDsKCQl5IC89IGQ7CgkJcmV0dXJuICp0aGlzOwoJfQoJCglQb2ludChkb3VibGUg
aW5feCwgZG91YmxlIGluX3kpOiB4KGluX3gpLCB5KGluX3kpIHsKCX0KCQp9OwoKaW5saW5lIFBv
aW50ICZvcGVyYXRvcisoUG9pbnQgY29uc3QgJnAwLCBQb2ludCBjb25zdCAmcDEpIHsKCVBvaW50
IHA9cDA7CglyZXR1cm4gcCs9cDE7Cn0KCmlubGluZSBQb2ludCAmb3BlcmF0b3IvKFBvaW50IGNv
bnN0ICZwMCwgZG91YmxlIGQpIHsKCVBvaW50IHA9cDA7CglyZXR1cm4gcC89ZDsKfQoKaW5saW5l
IG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgcywgUG9pbnQgcCkgewoJcmV0dXJuIHMgPDwg
JygnIDw8IHAueCA8PCAnLCcgPDwgcC55IDw8ICcpJzsgCn0KCmludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikgewoJUG9pbnQgcDEoMyw0KTsKCVBvaW50IHAyKDUsNik7CgkKCWNvdXQgPDwg
InAxOiAiPDwgcDEgPDwgIiAgcDI6ICIgPDwgcDIgPDwgZW5kbDsKCWNvdXQgPDwgIigocDErcDIp
LzIpOiAiIDw8ICgocDErcDIpLzIpIDw8IGVuZGw7Cn0K
More information about the Gcc-bugs
mailing list