c/4573: Test of NOT with Logical*1 inbetween (IEEE) fails

andreas.krakowczyk@fujitsu-siemens.com andreas.krakowczyk@fujitsu-siemens.com
Mon Oct 15 08:26:00 GMT 2001


>Number:         4573
>Category:       c
>Synopsis:       Test of NOT with Logical*1 inbetween (IEEE) fails
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Oct 15 08:26:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     andreas.krakowczyk@fujitsu-siemens.com
>Release:        gcc-3.0
>Organization:
>Environment:
sparc-sun-solaris2.8
>Description:
Test of NOT with Logical*1 inbetween (IEEE) fails

It is wrong that an expression has a different result than breaking it up into parts. 
I think the relevant code is in file c-typeck.c, function build_binary_op,
following the case label for BIT_XOR_EXPR.

There an explicit comment describes the situation above, a short type combined
with a constant. It then states to do the operation on the small type.

That is wrong when the sign extension rules are complex as in the example above.

Detected with "GNU C version 2.95.2 19991024 (release) (sparc-sun-solaris2.8)",
and "GNU C version 3.0.1 (sparc-sun-solaris2.8)".
>How-To-Repeat:
gcc bug13.c  && ./a.out
>Fix:

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

CnNpZ25lZCBjaGFyIGkxID0gLTE7CgppbnQgbWFpbigpCnsKCXNpZ25lZCBjaGFyIHMxOwoJdW5z
aWduZWQgc2hvcnQgdXM7Cglsb25nIGwxLGwyOwoKCWwxID0gKHNpZ25lZCBjaGFyKSAweDk5IF4g
KHVuc2lnbmVkIHNob3J0KSBpMSA7CgoJczEgPSAweDk5OwoJdXMgPSBpMTsKCWwyID0gczEgXiB1
czsKCglwcmludGYoIldyb25nOiAleCwgcmlnaHQ6ICV4XG4iLCBsMSwgbDIpOwoJLyogRGlkIHBy
aW50ICJXcm9uZzogNjYsIHJpZ2h0OiBmZmZmMDA2NiIgKi8KfQoKLyoKCkl0IGlzIHdyb25nIHRo
YXQgYW4gZXhwcmVzc2lvbiBoYXMgYSBkaWZmZXJlbnQgcmVzdWx0IHRoYW4gYnJlYWtpbmcgaXQg
dXAgaW50bwpwYXJ0cy4gCgpJIHRoaW5rIHRoZSByZWxldmFudCBjb2RlIGlzIGluIGZpbGUgYy10
eXBlY2suYywgZnVuY3Rpb24gYnVpbGRfYmluYXJ5X29wLApmb2xsb3dpbmcgdGhlIGNhc2UgbGFi
ZWwgZm9yIEJJVF9YT1JfRVhQUi4KCkhlcmUgYW4gZXhwbGljaXQgY29tbWVudCBkZXNjcmliZXMg
dGhlIHNpdHVhdGlvbiBhYm92ZSwgYSBzaG9ydCB0eXBlIGNvbWJpbmVkCndpdGggYSBjb25zdGFu
dC4gSXQgdGhlbiBzdGF0ZXMgdG8gZG8gdGhlIG9wZXJhdGlvbiBvbiB0aGUgc21hbGwgdHlwZS4K
ClRoYXQgaXMgd3Jvbmcgd2hlbiB0aGUgc2lnbiBleHRlbnNpb24gcnVsZXMgYXJlIGNvbXBsZXgg
YXMgaW4gdGhlIGV4YW1wbGUKYWJvdmUuCgpEZXRlY3RlZCB3aXRoICJHTlUgQyB2ZXJzaW9uIDIu
OTUuMiAxOTk5MTAyNCAocmVsZWFzZSkgKHNwYXJjLXN1bi1zb2xhcmlzMi44KSIsCmFuZCAiR05V
IEMgdmVyc2lvbiAzLjAuMSAoc3BhcmMtc3VuLXNvbGFyaXMyLjgpIi4KCgoqLwo=



More information about the Gcc-bugs mailing list