>Number: 9904 >Category: optimization >Synopsis: aliasing proböem >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Sun Mar 02 17:36:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Andreas Bogk >Release: 3.2.2 20030109 (Debian prerelease), and actually all versions of gcc 3 before that I've tested >Organization: >Environment: Debian-unstable on x86, also reported on a wide range of other systems >Description: I'm having a hard time nailing this one down in a conveniently-reproducible form. I'm sending you this mail anyways, in the hope that it will be useful to you. We're seeing a problem with gcc 3 when being used on the output of d2c, the Dylan-to-C-translator from the Gwydion project. The code works fine when compiled with gcc 2.95; or with gcc 3 and reduced optimizer settings, but reports internal errors where there should be none when compiled with -O2. In particular, the code works when compiled with '-O2 -fno-strict-aliasing', and doesn't work when compiled with '-O2'. The piece of code that gets confused is appended. I have marked the branches that are taken. Functions called are from a different library. The behaviour does not depend on whether that other library is compiled with -fno-strict-aliasing or not. The function values_sequence returns its first argument plus or minus an offset, creating an alias for the first argument. >How-To-Repeat: I can't provide a self-contained example of the bug at the moment, but I'll keep trying. I'm pretty sure that the provided code snippet is the one that's problematic, though. >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: text/x-csrc; name="ctv-preprocessed.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ctv-preprocessed.c" dHlwZWRlZiBpbnQgYm9vbGVhbjsKdHlwZWRlZiBjaGFyIGJvb2w7CnR5cGVkZWYgc3RydWN0IGhl YXBvYmogKmhlYXBwdHJfdDsKdHlwZWRlZiBzdHJ1Y3QgZGVzY3JpcHRvciB7CiAgICBoZWFwcHRy X3QgaGVhcHB0cjsKICAgIHVuaW9uIHsKICAgICAgICBsb25nIGw7CiAgICAgICAgZmxvYXQgZjsK ICAgICAgICB2b2lkICpwdHI7CiAgICB9IGRhdGF3b3JkOwp9IGRlc2NyaXB0b3JfdDsKCmV4dGVy biBzdHJ1Y3QgaGVhcG9iaiBjb21waWxlcl9iYXNlWmNvbXBpbGVfdGltZV92YWx1ZXNaQ0xTX2xp dGVyYWxfZmFsc2VfSEVBUDsKZXh0ZXJuIGRlc2NyaXB0b3JfdCBjb21waWxlcl9iYXNlWmNvbXBp bGVfdGltZV92YWx1ZXNaVmxpdGVyYWxfZmFsc2VWOwpleHRlcm4gc3RydWN0IGhlYXBvYmogY29t cGlsZXJfYmFzZVpzdHJfUk9PVF8yOTQ7CmV4dGVybiBkZXNjcmlwdG9yX3QgKnZhbHVlc19zZXF1 ZW5jZShkZXNjcmlwdG9yX3QgKnNwLCBoZWFwcHRyX3QgdmVjdG9yKTsKZXh0ZXJuIGhlYXBwdHJf dCBkeWxhblpkeWxhbl92aXNjZXJhWm1ha2VfcmVzdF9hcmdfRlVOKGRlc2NyaXB0b3JfdCAqb3Jp Z19zcCwgdm9pZCAqIEEwLCBsb25nIEExKTsKZXh0ZXJuIGRlc2NyaXB0b3JfdCBkeWxhblpmYWxz ZTsKZXh0ZXJuIHN0cnVjdCBoZWFwb2JqIGNvbXBpbGVyX2Jhc2Vac3RyX1JPT1RfMjg5OwpleHRl cm4gdm9pZCBkeWxhblpkeWxhbl92aXNjZXJhWnR5cGVfZXJyb3Jfd2l0aF9sb2NhdGlvbl9GVU4o ZGVzY3JpcHRvcl90ICpvcmlnX3NwLCBkZXNjcmlwdG9yX3QgQTAsIGhlYXBwdHJfdCBBMSwgZGVz Y3JpcHRvcl90IEEyKTsKZXh0ZXJuIGRlc2NyaXB0b3JfdCAqIGR5bGFuWmR5bGFuX3Zpc2NlcmFa bWFrZV9NRVRIX0dFTkVSSUNfMyhkZXNjcmlwdG9yX3QgKm9yaWdfc3AsIGhlYXBwdHJfdCBBMCAs IGxvbmcgQTEgLCBoZWFwcHRyX3QgQTIgKTsKZXh0ZXJuIHN0cnVjdCBoZWFwb2JqIGR5bGFuWmR5 bGFuX3Zpc2NlcmFabWFrZV9NRVRIX1JPT1Q7CmV4dGVybiBzdHJ1Y3QgaGVhcG9iaiBkeWxhblpl bXB0eV9saXN0X1JPT1Q7CgpoZWFwcHRyX3QgY29tcGlsZXJfYmFzZVpjb21waWxlX3RpbWVfdmFs dWVzWm1ha2VfTUVUSF8zKGRlc2NyaXB0b3JfdCAqb3JpZ19zcCwgaGVhcHB0cl90IEFfd290ICwg aGVhcHB0cl90IEFfbmV4dF9tZXRob2RfaW5mbyAsIGhlYXBwdHJfdCBBX3Jlc3QgKQp7CiAgICBk ZXNjcmlwdG9yX3QgKmNsdXN0ZXJfMF90b3A7CiAgICBkZXNjcmlwdG9yX3QgKmNsdXN0ZXJfMV90 b3A7CiAgICBkZXNjcmlwdG9yX3QgTF90ZW1wOwogICAgaGVhcHB0cl90IExfb3JpZ19hcmdzOwog ICAgZGVzY3JpcHRvcl90IExfdGVtcF8yOwogICAgaGVhcHB0cl90IExfcmVzOwogICAgZGVzY3Jp cHRvcl90IExfdGVtcF8zOwogICAgZGVzY3JpcHRvcl90IExfbmV3X3ZhbHVlOwogICAgZGVzY3Jp cHRvcl90IExfdGVtcF80OwoKCgogICAgTF90ZW1wLmhlYXBwdHIgPSAmY29tcGlsZXJfYmFzZVpj b21waWxlX3RpbWVfdmFsdWVzWkNMU19saXRlcmFsX2ZhbHNlX0hFQVA7CiAgICBMX3RlbXAuZGF0 YXdvcmQubCA9IDA7CiAgICBjbHVzdGVyXzBfdG9wID0gb3JpZ19zcCArIDE7CiAgICBvcmlnX3Nw WzBdID0gTF90ZW1wOwogICAgY2x1c3Rlcl8xX3RvcCA9IHZhbHVlc19zZXF1ZW5jZShjbHVzdGVy XzBfdG9wLCBBX3Jlc3QpOwogICAgY2x1c3Rlcl8wX3RvcCA9IGNsdXN0ZXJfMV90b3A7CiAgICBM X29yaWdfYXJncyA9IGR5bGFuWmR5bGFuX3Zpc2NlcmFabWFrZV9yZXN0X2FyZ19GVU4oY2x1c3Rl cl8wX3RvcCwgb3JpZ19zcCArIDAsIGNsdXN0ZXJfMF90b3AgLSBvcmlnX3NwIC0gMCk7CgoKICAg IExfdGVtcF8yID0gY29tcGlsZXJfYmFzZVpjb21waWxlX3RpbWVfdmFsdWVzWlZsaXRlcmFsX2Zh bHNlVjsKICAgIGlmICgoTF90ZW1wXzIuaGVhcHB0ciAhPSBkeWxhblpmYWxzZS5oZWFwcHRyKSkg eyAvKiBub3QgdGFrZW4gKi8KICAgICAgICBpZiAoKCZjb21waWxlcl9iYXNlWmNvbXBpbGVfdGlt ZV92YWx1ZXNaQ0xTX2xpdGVyYWxfZmFsc2VfSEVBUCA9PSAoKihoZWFwcHRyX3QgKikoKGNoYXIg KilMX3RlbXBfMi5oZWFwcHRyICsgMCkpKSkgewogICAgICAgICAgICBMX3JlcyA9IExfdGVtcF8y LmhlYXBwdHI7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBMX3RlbXBfMy5o ZWFwcHRyID0gJmNvbXBpbGVyX2Jhc2Vac3RyX1JPT1RfMjg5OwogICAgICAgICAgICBMX3RlbXBf My5kYXRhd29yZC5sID0gMDsKCiAgICAgICAgICAgIGR5bGFuWmR5bGFuX3Zpc2NlcmFadHlwZV9l cnJvcl93aXRoX2xvY2F0aW9uX0ZVTihvcmlnX3NwLCBMX3RlbXBfMiwgJmNvbXBpbGVyX2Jhc2Va Y29tcGlsZV90aW1lX3ZhbHVlc1pDTFNfbGl0ZXJhbF9mYWxzZV9IRUFQLCBMX3RlbXBfMyk7CiAg ICAgICAgICAgIG5vdF9yZWFjaGVkKCk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7IC8qIHRh a2VuICovCgogICAgICAgIGNsdXN0ZXJfMF90b3AgPSB2YWx1ZXNfc2VxdWVuY2Uob3JpZ19zcCwg TF9vcmlnX2FyZ3MpOwoKICAgICAgICAvKiBoZXJlLCBjbHVzdGVyXzBfdG9wIGlzIGJlaW5nIHVz ZWQgdG8gc3RvcmUgdGhlIHJldHVybiB2YWx1ZQogICAgICAgICAgIG9mIHRoZSBmdW5jdGlvbi4g IE5vdGljZSB0aGUgYWxpYXNpbmcgd2l0aCBvcmlnX3NwICovCiAgICAgICAgY2x1c3Rlcl8wX3Rv cCA9IGR5bGFuWmR5bGFuX3Zpc2NlcmFabWFrZV9NRVRIX0dFTkVSSUNfMyhjbHVzdGVyXzBfdG9w LCAmZHlsYW5aZHlsYW5fdmlzY2VyYVptYWtlX01FVEhfUk9PVCwgY2x1c3Rlcl8wX3RvcCAtIG9y aWdfc3AsICZkeWxhblplbXB0eV9saXN0X1JPT1QpOwogICAgICAgIExfbmV3X3ZhbHVlID0gb3Jp Z19zcFswXTsKCiAgICAgICAgY29tcGlsZXJfYmFzZVpjb21waWxlX3RpbWVfdmFsdWVzWlZsaXRl cmFsX2ZhbHNlViA9IExfbmV3X3ZhbHVlOwogICAgICAgIGlmICgoJmNvbXBpbGVyX2Jhc2VaY29t cGlsZV90aW1lX3ZhbHVlc1pDTFNfbGl0ZXJhbF9mYWxzZV9IRUFQID09ICgqKGhlYXBwdHJfdCAq KSgoY2hhciAqKUxfbmV3X3ZhbHVlLmhlYXBwdHIgKyAwKSkpKSB7CgkgIC8qIHRoaXMgYnJhbmNo IGlzIHRha2VuIHdoZW4gY29tcGlsaW5nIHdpdGggLWZuby1zdHJpY3QtYWxpYXNlcy4KCSAgICAg VGhpcyBpcyBhIG1pc3Rha2UsIGl0IGxvb2tzIGxpa2UgTF90ZW1wIGZyb20gYWJvdmUgZW5kcyB1 cAoJICAgICBpbiBMX25ld192YWx1ZSAqLwogICAgICAgICAgICBMX3JlcyA9IExfbmV3X3ZhbHVl LmhlYXBwdHI7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoJICAvKiB0aGlzIGJyYW5jaCBpcyB0 YWtlbiBlcnJvbmV1c2x5IHdpdGggLU8yICovCiAgICAgICAgICAgIExfdGVtcF80LmhlYXBwdHIg PSAmY29tcGlsZXJfYmFzZVpzdHJfUk9PVF8yOTQ7CiAgICAgICAgICAgIExfdGVtcF80LmRhdGF3 b3JkLmwgPSAwOwoKICAgICAgICAgICAgZHlsYW5aZHlsYW5fdmlzY2VyYVp0eXBlX2Vycm9yX3dp dGhfbG9jYXRpb25fRlVOKG9yaWdfc3AsIExfbmV3X3ZhbHVlLCAmY29tcGlsZXJfYmFzZVpjb21w aWxlX3RpbWVfdmFsdWVzWkNMU19saXRlcmFsX2ZhbHNlX0hFQVAsIExfdGVtcF80KTsKICAgICAg ICAgICAgbm90X3JlYWNoZWQoKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gTF9yZXM7Cn0K