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/6164: incorrect code above optimization -O1



>Number:         6164
>Category:       optimization
>Synopsis:       incorrect code above optimization -O1
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Wed Apr 03 17:06:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Robert Sanders
>Release:        gcc 3.0.4
>Organization:
>Environment:
System: Linux rmsibook.zai.com 2.4.10-12a #1 Tue Oct 9 04:49:39 EDT 2001 ppc unknown	
Architecture:ppc
>Description:
The program is to test functions that convert between the VAX D double precision datatype and the IEEE double precision datatype (assuming a big-endian host).  The executable produces incorrect results for optimization levels above -O1.

The program will show the 8 bytes of the VAX double precision number, the resultant IEEE value, the 8 bytes of the IEEE double precision number, then convert back to the VAX double and show the 8 bytes.  If it doesn't get what it started with a message is displayed.
>How-To-Repeat:
This works:
	compile ->  gcc -Wall myc.c -o myc
	execute ->  ./myc
     ...
     compile ->  gcc -Wall -O1 myc.c -o myc
     execute ->  ./myc

These produce incorrect executable code
     compile -> gcc -Wall -O2 myc.c -o myc
     execute -> ./myc
     ...
     and so on thru compiling with -O5

NOTE:  We have seen a very similar problem on a Athelon Linux box under Redhat 7.x  *except* the the incorrect code only
appears with running with optimization level -O2.  The problem existed with gcc 3.0.3 as well.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="myc.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="myc.c"

I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHVuaXN0ZC5o
PgoKdHlwZWRlZiBzaG9ydCBpbnRfMjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnRfdTI7CnR5
cGVkZWYgbG9uZyBpbnRfNDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludF91NDsKdHlwZWRlZiBk
b3VibGUgcmVhbF84Owp0eXBlZGVmIGZsb2F0IHJlYWxfNDsKCgp2b2lkCmR1bXBpdChjaGFyICp0
ZXh0LGNoYXIgKnB0cixsb25nIGRhdGFsZW4pCnsKICBsb25nIGluZGV4OwogIHByaW50ZigiJXMg
LT4gIix0ZXh0KTsKICBmb3IgKGluZGV4PTA7aW5kZXg8ZGF0YWxlbjtpbmRleCsrKQogIHsKICAg
IHByaW50ZigiJTAyeCAiLCoodW5zaWduZWQgY2hhciopcHRyKyspOwogIH0KICBwcmludGYoIlxu
Iik7Cn0KCnZvaWQgc3dhcDIgKGNoYXIgKmJ1ZiwgaW50XzQgKm4pCnsKICByZWdpc3RlciBpbnQg
ICAgaTsKICByZWdpc3RlciBpbnQgICAgaiA9ICpuICogMjsKICByZWdpc3RlciBjaGFyICAgYjsK
CiAgZm9yIChpID0gMDsgaSA8IGo7IGkgKz0gMikgewogICAgYiA9IGJ1ZltpXTsKICAgIGJ1Zltp
XSA9IGJ1ZltpICsgMV07CiAgICBidWZbaSArIDFdID0gYjsKICB9Cn0JLyogc3dhcDIgKi8KCnZv
aWQgc3dhcDQgKGNoYXIgKmJ1ZiwgaW50XzQgKm4pCnsKICByZWdpc3RlciBpbnQgICAgaTsKICBy
ZWdpc3RlciBjaGFyICAgYjsKICByZWdpc3RlciBpbnQgICAgaiA9ICpuICogNDsKCiAgZm9yIChp
ID0gMDsgaSA8IGo7IGkgKz0gNCkgewogICAgYiA9IGJ1ZltpXTsKICAgIGJ1ZltpXSA9IGJ1Zltp
ICsgM107CiAgICBidWZbaSArIDNdID0gYjsKICAgIGIgPSBidWZbaSArIDFdOwogICAgYnVmW2kg
KyAxXSA9IGJ1ZltpICsgMl07CiAgICBidWZbaSArIDJdID0gYjsKICB9Cn0JLyogc3dhcDQgKi8K
CnZvaWQgc3dhcDggKGNoYXIgKmJ1ZiwgY29uc3QgaW50XzQgKm4pCnsKICByZWdpc3RlciBpbnQg
ICAgaTsKICByZWdpc3RlciBjaGFyICAgYjsKICByZWdpc3RlciBpbnQgICAgaiA9ICpuICogODsK
CiAgZm9yIChpID0gMDsgaSA8IGo7IGkgKz0gOCkgewogICAgYiA9IGJ1ZltpXTsKICAgIGJ1Zltp
XSA9IGJ1ZltpICsgN107CiAgICBidWZbaSArIDddID0gYjsKICAgIGIgPSBidWZbaSArIDFdOwog
ICAgYnVmW2kgKyAxXSA9IGJ1ZltpICsgNl07CiAgICBidWZbaSArIDZdID0gYjsKICAgIGIgPSBi
dWZbaSArIDJdOwogICAgYnVmW2kgKyAyXSA9IGJ1ZltpICsgNV07CiAgICBidWZbaSArIDVdID0g
YjsKICAgIGIgPSBidWZbaSArIDNdOwogICAgYnVmW2kgKyAzXSA9IGJ1ZltpICsgNF07CiAgICBi
dWZbaSArIDRdID0gYjsKICB9Cn0JLyogc3dhcDggKi8KCgp2b2lkIGRfdmF4MmllZWUgKHJlYWxf
OCAqYnVmLCBjb25zdCBpbnRfNCAqbikKewogIGludCAgICAgICAgICAgICAgaTsKICB1bnNpZ25l
ZCBpbnQJCSAgIGogPSAqbjsKICBpbnRfNAkJCWs9Km4qNDsKICBpbnRfdTQgICAJICAgd29yZFsy
XSwgYmlhczsKICByZWdpc3RlciBpbnRfdTIgKnNiLCAqc3c7CiAgcmVhbF84ICAgICAgICAgICpk
dzsKCiAgc3dhcDIoKGNoYXIqKWJ1Ziwmayk7CiAgc3cgPSAoaW50X3UyICopIHdvcmQ7CiAgZHcg
PSAocmVhbF84ICopIHdvcmQ7CiAgYmlhcyA9IDEwMjMgLSAxMjk7CiAgYmlhcyA9IGJpYXMgPDwg
KDUyIC0gMzIpOwogIGZvciAoaSA9IDA7IGkgPCBqOyBpKyspIHsKICAgIHNiID0gKGludF91MiAq
KSAoYnVmICsgaSk7CiAgICBzd1szXSA9IHNiWzNdOwogICAgc3dbMl0gPSBzYlsyXTsKICAgIHN3
WzFdID0gc2JbMV07CiAgICBzd1swXSA9IHNiWzBdICYgMHg3RkZGOwogICAgaWYgKHdvcmRbMF0g
IT0gMCB8fCB3b3JkWzFdICE9IDApIHsKICAgICAgd29yZFsxXSA9ICh3b3JkWzFdID4+IDMpIHwg
KHdvcmRbMF0gPDwgMjkpOwogICAgICB3b3JkWzBdID0gKHdvcmRbMF0gPj4gMykgKyBiaWFzOwog
ICAgICBpZiAoKHNiWzBdICYgMHg4MDAwKSAhPSAwKQoJc3dbMF0gPSBzd1swXSB8IDB4ODAwMDsK
ICAgICAgYnVmW2ldID0gKmR3OwogICAgfQogIH0KCn0JLyogZF92YXgyaWVlZSAqLwoKdm9pZCBk
X2llZWUydmF4IChyZWFsXzggKmJ1ZiwgY29uc3QgaW50XzQgKm4pCnsKICBpbnQgICAgICAgICAg
ICAgIGk7CiAgdW5zaWduZWQgaW50CQkgICBqID0gKm47CiAgaW50XzQJCQlrPSpuKjQ7CiAgaW50
X3U0ICAJICAgd29yZFsyXSwgYmlhczsKICBpbnRfdTIgICAgICAgICAgICpzYiwgKnN3OwogIHJl
YWxfOCAgICAgICAgICAqZHc7CgogIHN3ID0gKGludF91MiAqKSB3b3JkOwogIGR3ID0gKHJlYWxf
OCAqKSB3b3JkOwogIGJpYXMgPSAxMDIzIC0gMTI5OwogIGJpYXMgPSBiaWFzIDw8ICg1MiAtIDMy
KTsKICBmb3IgKGkgPSAwOyBpIDwgajsgaSsrKSB7CiAgICAqZHcgPSBidWZbaV07CiAgICBzYiA9
IChpbnRfdTIgKikgKGJ1ZiArIGkpOwogICAgaWYgKHdvcmRbMF0gIT0gMCB8fCB3b3JkWzFdICE9
IDApIHsKICAgICAgd29yZFswXSA9ICgod29yZFswXSAtIGJpYXMpIDw8IDMpIHwgKHdvcmRbMV0g
Pj4gMjkpOwogICAgICB3b3JkWzFdID0gKHdvcmRbMV0gPDwgMyk7CiAgICAgIGlmICgoc2JbMF0g
JiAweDgwMDApICE9IDApCglzd1swXSA9IHN3WzBdIHwgMHg4MDAwOwogICAgICBzYlswXSA9IHN3
WzBdOwogICAgICBzYlsxXSA9IHN3WzFdOwogICAgICBzYlsyXSA9IHN3WzJdOwogICAgICBzYlsz
XSA9IHN3WzNdOwogICAgfQogIH0KICBzd2FwMigoY2hhciopYnVmLCZrKTsKCn0JLyogZF9pZWVl
MnZheCAqLwoKaW50Cm1haW4oKQp7CiAgaW50IGk7CiAgaW50XzQgbnVtZWxlbXM9MTsKICBkb3Vi
bGUgdG9jaGFuZ2U7CgogIHVuc2lnbmVkIGNoYXIgbXl0ZXN0ZGF0YVtdWzhdPQp7CiAgeyAweGEw
LDB4NDEsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDB9LAogIHsgMHg4MCwweEMwLDB4MDAs
MHgwMCwweDAwLDB4MDAsMHgwMCwweDAwfSwKICB7IDB4MDAsMHhDMSwweDAwLDB4MDAsMHgwMCww
eDAwLDB4MDAsMHgwMH0sCiAgeyAweDQwLDB4QzEsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4
MDB9LAogIHsgMHg4MCwweEMxLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwfSwKICB7IDB4
QTAsMHhDMSwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMH0sCiAgeyAweEMwLDB4QzEsMHgw
MCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDB9LAogIHsgMHhFMCwweEMxLDB4MDAsMHgwMCwweDAw
LDB4MDAsMHgwMCwweDAwfSwKICB7IDB4MDAsMHhDMiwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAs
MHgwMH0sCn07CgogIGZvciAoaT0wO2k8NTtpKyspCiAgewogICAgbWVtY3B5KChjaGFyKikmdG9j
aGFuZ2UsbXl0ZXN0ZGF0YVtpXSw4KTsKICAgIGR1bXBpdCgiQkVGT1JFICAgIiwoY2hhciopJnRv
Y2hhbmdlLDgpOwogICAgZF92YXgyaWVlZSgmdG9jaGFuZ2UsJm51bWVsZW1zKTsKICAgIGR1bXBp
dCgiQWZ0ZXIgICAgIiwoY2hhciopJnRvY2hhbmdlLDgpOwogICAgcHJpbnRmKCIgVmFsdWUgaXMg
JWdcbiIsdG9jaGFuZ2UpOwogICAgZF9pZWVlMnZheCgmdG9jaGFuZ2UsJm51bWVsZW1zKTsKICAg
IGR1bXBpdCgiQW5kIGJhY2sgIiwoY2hhciopJnRvY2hhbmdlLDgpOwogICAgaWYgKG1lbWNtcCgo
Y2hhciopJnRvY2hhbmdlLG15dGVzdGRhdGFbaV0sOCkhPTApCiAgICB7CiAgICAgIHByaW50Zigi
SSBkaWRuJ3QgZ2V0IHdoYXQgSSBzdGFydGVkIHdpdGghXG4iKTsKICAgIH0gCiAgICBwcmludGYo
IlxuIik7CiAgfQoKICByZXR1cm4gMDsKfQo=


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