c/877: gcc 2.95.2 generates incorrect code on i386

aeb@cwi.nl aeb@cwi.nl
Fri Nov 24 05:06:00 GMT 2000


>Number:         877
>Category:       c
>Synopsis:       gcc 2.95.2 generates incorrect code on i386
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Fri Nov 24 05:06:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Andries E. Brouwer
>Release:        gcc 2.95.2
>Organization:
>Environment:
ix86 with Linux or *BSD
>Description:
It seems that a variable length shift of a long long
is miscompiled. This causes Linux kernel bugs.
>How-To-Repeat:
gcc -Wall -O2 -o bug bug.c; ./bug
>Fix:

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

LyoKICogYnVnLmMgLSBhZWIsIDAwMTEyNAogKgogKiBUaGlzIHByb2dyYW0gc2hvd3MgYSBidWcg
aW4gZ2NjIDIuOTUuMi4KICogSXQgc2hvdWxkIHByaW50IDB4MCBhbmQgZXhpdC4KICogRm9yIG1l
IGl0IHByaW50cyAweDg0ODAwMDAwLgogKgogKiBDb21waWxlIHdpdGg6CiAqICAgIGdjYyAtV2Fs
bCAtTzIgLW8gYnVnIGJ1Zy5jCiAqLwpleHRlcm4gaW50IHByaW50Zihjb25zdCBjaGFyICpmb3Jt
YXQsIC4uLik7CgpzdHJ1Y3QgaW5vZGUgewoJbG9uZyBsb25nCQlpX3NpemU7CglzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sJKmlfc2I7Cn07CgpzdHJ1Y3QgZmlsZSB7Cglsb25nIGxvbmcJCWZfcG9zOwp9OwoK
c3RydWN0IHN1cGVyX2Jsb2NrIHsKCWludAkJCXNfYmxvY2tzaXplOwoJdW5zaWduZWQgY2hhcgkJ
c19ibG9ja3NpemVfYml0czsKCWludAkJCXNfaHM7Cn07CgpzdGF0aWMgY2hhciAqCmlzb2ZzX2Jy
ZWFkKHVuc2lnbmVkIGludCBibG9jaykKewoJcHJpbnRmKCIweCV4XG4iLCBibG9jayk7CglleGl0
KDApOwp9CgpzdGF0aWMgaW50CmRvX2lzb2ZzX3JlYWRkaXIoc3RydWN0IGlub2RlICppbm9kZSwg
c3RydWN0IGZpbGUgKmZpbHApCnsKCWludCBidWZzaXplID0gaW5vZGUtPmlfc2ItPnNfYmxvY2tz
aXplOwoJdW5zaWduZWQgY2hhciBidWZiaXRzID0gaW5vZGUtPmlfc2ItPnNfYmxvY2tzaXplX2Jp
dHM7Cgl1bnNpZ25lZCBpbnQgYmxvY2ssIG9mZnNldDsKCWNoYXIgKmJoID0gMDsKCWludCBoczsK
CiAJaWYgKGZpbHAtPmZfcG9zID49IGlub2RlLT5pX3NpemUpCgkJcmV0dXJuIDA7CiAKCW9mZnNl
dCA9IGZpbHAtPmZfcG9zICYgKGJ1ZnNpemUgLSAxKTsKCWJsb2NrID0gZmlscC0+Zl9wb3MgPj4g
YnVmYml0czsKCWhzID0gaW5vZGUtPmlfc2ItPnNfaHM7CgoJd2hpbGUgKGZpbHAtPmZfcG9zIDwg
aW5vZGUtPmlfc2l6ZSkgewoJCWlmICghYmgpCgkJCWJoID0gaXNvZnNfYnJlYWQoYmxvY2spOwoK
CQlocyArPSBibG9jayA8PCBidWZiaXRzOwoKCQlpZiAoaHMgPT0gMCkKCQkJZmlscC0+Zl9wb3Mr
KzsKCgkJaWYgKG9mZnNldCA+PSBidWZzaXplKQoJCQlvZmZzZXQgJj0gYnVmc2l6ZSAtIDE7CgoJ
CWlmICgqYmgpCgkJCWZpbHAtPmZfcG9zKys7CgoJCWZpbHAtPmZfcG9zKys7Cgl9CglyZXR1cm4g
MDsKfQoKc3RydWN0IHN1cGVyX2Jsb2NrIHM7CnN0cnVjdCBpbm9kZSBpOwpzdHJ1Y3QgZmlsZSBm
OwoKaW50Cm1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KXsKCXMuc19ibG9ja3NpemUgPSA1MTI7
CglzLnNfYmxvY2tzaXplX2JpdHMgPSA5OwoJaS5pX3NpemUgPSAyMDQ4OwoJaS5pX3NiID0gJnM7
CglmLmZfcG9zID0gMDsKCglkb19pc29mc19yZWFkZGlyKCZpLCZmKTsKCXJldHVybiAwOwp9Cg==


More information about the Gcc-bugs mailing list