From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28937 invoked by alias); 4 Mar 2003 19:46:02 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 28904 invoked by uid 71); 4 Mar 2003 19:46:01 -0000 Resent-Date: 4 Mar 2003 19:46:01 -0000 Resent-Message-ID: <20030304194601.28903.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, levon@movementarian.org Received: (qmail 27491 invoked by uid 48); 4 Mar 2003 19:44:31 -0000 Message-Id: <20030304194431.27490.qmail@sources.redhat.com> Date: Tue, 04 Mar 2003 19:46:00 -0000 From: levon@movementarian.org Reply-To: levon@movementarian.org To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c/9944: gcc does not warn for always-false "if (!a & 0x4)" bitwise and on boolean value X-SW-Source: 2003-03/txt/msg00171.txt.bz2 List-Id: >Number: 9944 >Category: c >Synopsis: gcc does not warn for always-false "if (!a & 0x4)" bitwise and on boolean value >Confidential: no >Severity: non-critical >Priority: low >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Tue Mar 04 19:46:01 UTC 2003 >Closed-Date: >Last-Modified: >Originator: levon@movementarian.org >Release: gcc 3.4 CVS and earlier >Organization: >Environment: Linux i386 >Description: GCC does not warn for expressions that are always false, such as the following : if (!a & 0x4) // really meant if (!(a & 0x4)) I thought this might be easy to fix but its beyond my admittedly meagre capabilities. Apparently I should be doing it in GIMPLE according to dnovillo. I'll attach my part-working patch here anyway in the hope it inspires somebody with more nous (I'd also like to know the answer to "is there a simple way to find out if a tree is constrained to boolean, i.e. 0|1, result", but only academically). >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="bba2.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bba2.diff" SW5kZXg6IGMtY29tbW9uLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NjL2djYy9n Y2MvYy1jb21tb24uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zOTMuMi4xCmRpZmYgLXUgLXIx LjM5My4yLjEgYy1jb21tb24uYwotLS0gYy1jb21tb24uYwkxOSBGZWIgMjAwMyAwMjowNzo1NiAt MDAwMAkxLjM5My4yLjEKKysrIGMtY29tbW9uLmMJNCBNYXIgMjAwMyAxOTo0MDoyMyAtMDAwMApA QCAtMzY5LDYgKzM2OSwxMCBAQAogCiBpbnQgd2Fybl9iYWRfZnVuY3Rpb25fY2FzdDsKIAorLyog V2FybiBhYm91dCBhbHdheXMtZmFsc2UgYml0d2lzZSBhbmQgd2l0aCAhPSAxIG9uIGEgYm9vbGVh biB2YWx1ZSAqLworCitpbnQgd2Fybl9ib29sZWFuX2JpdHdpc2VfYW5kOworCiAvKiBXYXJuIGFi b3V0IHRyYWRpdGlvbmFsIGNvbnN0cnVjdHMgd2hvc2UgbWVhbmluZ3MgY2hhbmdlZCBpbiBBTlNJ IEMuICAqLwogCiBpbnQgd2Fybl90cmFkaXRpb25hbDsKQEAgLTY2MDgsNiArNjYxMiwyMiBAQAog ICAgIH0KIAogICAoKmNhbGxiYWNrKSAoY3R4LCBwYXJhbSwgcGFyYW1fbnVtKTsKK30KKwwKKy8q IHJldHVybiB0cnVlIGlmIHRoZSB0cmVlIGlzIGtub3duIHRvIHJlcHJlc2VudCBhIGJvb2xlYW4g dmFsdWUuICovCitpbnQKK2Jvb2xlYW5fdmFsdWVfcChleHByKQorICAgICB0cmVlIGV4cHI7Cit7 CisgIHRyZWUgb3JpZzEgPSBleHByOworICB0cmVlIG9yaWcyOworICB0cmVlIG5ldzM7CisgIGlm ICh0cnV0aF92YWx1ZV9wIChUUkVFX0NPREUgKGV4cHIpKSkKKyAgICAgcmV0dXJuIDE7CisgIG9y aWcyID0gZXhwcjsKKyAgU1RSSVBfTk9QUyAoZXhwcik7CisgIG5ldzMgPSBleHByOworICByZXR1 cm4gdHJ1dGhfdmFsdWVfcCAoVFJFRV9DT0RFIChleHByKSk7CiB9CiAKICNpbmNsdWRlICJndC1j LWNvbW1vbi5oIgpJbmRleDogYy1jb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9v dC9nY2MvZ2NjL2djYy9jLWNvbW1vbi5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE2NApkaWZm IC11IC1yMS4xNjQgYy1jb21tb24uaAotLS0gYy1jb21tb24uaAkxIERlYyAyMDAyIDE3OjUxOjQ0 IC0wMDAwCTEuMTY0CisrKyBjLWNvbW1vbi5oCTQgTWFyIDIwMDMgMTk6NDA6MjUgLTAwMDAKQEAg LTUzOCw2ICs1MzgsMTAgQEAKIAogZXh0ZXJuIGludCB3YXJuX2JhZF9mdW5jdGlvbl9jYXN0Owog CisvKiBXYXJuIGFib3V0IGFsd2F5cy1mYWxzZSBiaXR3aXNlIGFuZCB3aXRoICE9IDEgb24gYSBi b29sZWFuIHZhbHVlICovCisKK2V4dGVybiBpbnQgd2Fybl9ib29sZWFuX2JpdHdpc2VfYW5kOwor CiAvKiBXYXJuIGFib3V0IHRyYWRpdGlvbmFsIGNvbnN0cnVjdHMgd2hvc2UgbWVhbmluZ3MgY2hh bmdlZCBpbiBBTlNJIEMuICAqLwogCiBleHRlcm4gaW50IHdhcm5fdHJhZGl0aW9uYWw7CkBAIC05 MzksNiArOTQzLDcgQEAKIGV4dGVybiBib29sIGNfcHJvbW90aW5nX2ludGVnZXJfdHlwZV9wCQlQ QVJBTVMgKCh0cmVlKSk7CiBleHRlcm4gaW50IHNlbGZfcHJvbW90aW5nX2FyZ3NfcAkJUEFSQU1T ICgodHJlZSkpOwogZXh0ZXJuIHRyZWUgc3RyaXBfYXJyYXlfdHlwZXMgICAgICAgICAgICAgICAg ICAgUEFSQU1TICgodHJlZSkpOworZXh0ZXJuIGludCBib29sZWFuX3ZhbHVlX3AJCQlQQVJBTVMg KCh0cmVlKSk7CiAKIC8qIFRoZXNlIG1hY3JvcyBwcm92aWRlIGNvbnZlbmllbnQgYWNjZXNzIHRv IHRoZSB2YXJpb3VzIF9TVE1UIG5vZGVzLiAgKi8KIApJbmRleDogYy1vcHRzLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NjL2djYy9nY2MvYy1vcHRzLmMsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMjQuNi4xCmRpZmYgLXUgLXIxLjI0LjYuMSBjLW9wdHMuYwotLS0gYy1vcHRzLmMJ MjEgRmViIDIwMDMgMDY6MTI6NTggLTAwMDAJMS4yNC42LjEKKysrIGMtb3B0cy5jCTQgTWFyIDIw MDMgMTk6NDA6MjYgLTAwMDAKQEAgLTEyNyw2ICsxMjcsNyBAQAogICBPUFQoIldhYmkiLCAgICAg ICAgICAgICAgICAgICBDTF9DWFgsICAgT1BUX1dhYmkpICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiAgIE9QVCgiV2FsbCIsCQkJQ0xfQUxMLCAgIE9QVF9XYWxsKQkJCSAgICAgXAogICBPUFQo IldiYWQtZnVuY3Rpb24tY2FzdCIsCUNMX0MsICAgICBPUFRfV2JhZF9mdW5jdGlvbl9jYXN0KQkg ICAgIFwKKyAgT1BUKCJXYm9vbGVhbi1iaXR3aXNlLWFuZCIsICAgQ0xfQUxMLCAgIE9QVF9XYm9v bGVhbl9iaXR3aXNlX2FuZCkgICAgICAgICAgXAogICBPUFQoIldjYXN0LXF1YWwiLAkJQ0xfQUxM LCAgIE9QVF9XY2FzdF9xdWFsKQkJICAgICBcCiAgIE9QVCgiV2NoYXItc3Vic2NyaXB0cyIsCUNM X0FMTCwgICBPUFRfV2NoYXJfc3Vic2NyaXB0cykJCSAgICAgXAogICBPUFQoIldjb21tZW50IiwJ CUNMX0FMTCwgICBPUFRfV2NvbW1lbnQpCQkJICAgICBcCkBAIC03MDIsNiArNzAzLDcgQEAKICAg ICAgIHdhcm5fc2lnbl9jb21wYXJlID0gb247CS8qIFdhcyBDKysgb25seS4gICovCiAgICAgICB3 YXJuX3N3aXRjaCA9IG9uOwogICAgICAgd2Fybl9zdHJpY3RfYWxpYXNpbmcgPSBvbjsKKyAgICAg IHdhcm5fYm9vbGVhbl9iaXR3aXNlX2FuZCA9IG9uOwogICAgICAgCiAgICAgICAvKiBPbmx5IHdh cm4gYWJvdXQgdW5rbm93biBwcmFnbWFzIHRoYXQgYXJlIG5vdCBpbiBzeXN0ZW0KIAkgaGVhZGVy cy4gICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApAQCAtNzM0LDYg KzczNiwxMCBAQAogCiAgICAgY2FzZSBPUFRfV2JhZF9mdW5jdGlvbl9jYXN0OgogICAgICAgd2Fy bl9iYWRfZnVuY3Rpb25fY2FzdCA9IG9uOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE9QVF9X Ym9vbGVhbl9iaXR3aXNlX2FuZDoKKyAgICAgIHdhcm5fYm9vbGVhbl9iaXR3aXNlX2FuZCA9IG9u OwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE9QVF9XY2FzdF9xdWFsOgpJbmRleDogYy10eXBl Y2suYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2MvZ2NjL2djYy9jLXR5cGVjay5j LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIxMy4yLjIKZGlmZiAtdSAtcjEuMjEzLjIuMiBjLXR5 cGVjay5jCi0tLSBjLXR5cGVjay5jCTkgSmFuIDIwMDMgMTI6MTE6MzQgLTAwMDAJMS4yMTMuMi4y CisrKyBjLXR5cGVjay5jCTQgTWFyIDIwMDMgMTk6NDA6MzQgLTAwMDAKQEAgLTIwMDcsNiArMjAw NywxNyBAQAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEJJVF9BTkRfRVhQUjoKKyAgICAgIC8q IGdpdmUgYSB3YXJuaW5nIGZvciAoIXVhICYgMHg0KSBhbmQgc2ltaWxhciBjYXNlcyAqLworICAg ICAgaWYgKHdhcm5fYm9vbGVhbl9iaXR3aXNlX2FuZCkKKyAgICAgIHsKKyAgICAgICAgIGludCBv cDBub3QxID0gVFJFRV9DT0RFIChvcDApID09IElOVEVHRVJfQ1NUICYmICFpbnRlZ2VyX29uZXAg KG9wMCk7CisgICAgICAgICBpbnQgb3Axbm90MSA9IFRSRUVfQ09ERSAob3AxKSA9PSBJTlRFR0VS X0NTVCAmJiAhaW50ZWdlcl9vbmVwIChvcDEpOworCSBpZiAoKG9wMG5vdDEgJiYgYm9vbGVhbl92 YWx1ZV9wIChvcDEpKSB8fCAob3Axbm90MSAmJiBib29sZWFuX3ZhbHVlX3AgKG9wMCkpKQorICAg ICAgICAgICAgd2FybmluZyAoImJpdHdpc2UgYW5kIGV4cHJlc3Npb24gaXMgYWx3YXlzIGZhbHNl Iik7CisgICAgICB9CisKKyAgICAgIC8qIGZhbGx0aHJvdWdoICovCisKICAgICBjYXNlIEJJVF9B TkRUQ19FWFBSOgogICAgIGNhc2UgQklUX0lPUl9FWFBSOgogICAgIGNhc2UgQklUX1hPUl9FWFBS OgpJbmRleDogZm9sZC1jb25zdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L2djYy9n Y2MvZ2NjL2ZvbGQtY29uc3QuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMjcuMi4xCmRpZmYg LXUgLXIxLjIyNy4yLjEgZm9sZC1jb25zdC5jCi0tLSBmb2xkLWNvbnN0LmMJMTYgRmViIDIwMDMg MDg6MjU6MjAgLTAwMDAJMS4yMjcuMi4xCisrKyBmb2xkLWNvbnN0LmMJNCBNYXIgMjAwMyAxOTo0 MDo0MyAtMDAwMApAQCAtNzQsNyArNzQsNiBAQAogc3RhdGljIGVudW0gdHJlZV9jb2RlIHN3YXBf dHJlZV9jb21wYXJpc29uIFBBUkFNUyAoKGVudW0gdHJlZV9jb2RlKSk7CiBzdGF0aWMgaW50IGNv bXBhcmlzb25fdG9fY29tcGNvZGUgUEFSQU1TICgoZW51bSB0cmVlX2NvZGUpKTsKIHN0YXRpYyBl bnVtIHRyZWVfY29kZSBjb21wY29kZV90b19jb21wYXJpc29uIFBBUkFNUyAoKGludCkpOwotc3Rh dGljIGludCB0cnV0aF92YWx1ZV9wCVBBUkFNUyAoKGVudW0gdHJlZV9jb2RlKSk7CiBzdGF0aWMg aW50IG9wZXJhbmRfZXF1YWxfZm9yX2NvbXBhcmlzb25fcCBQQVJBTVMgKCh0cmVlLCB0cmVlLCB0 cmVlKSk7CiBzdGF0aWMgaW50IHR3b3ZhbF9jb21wYXJpc29uX3AJUEFSQU1TICgodHJlZSwgdHJl ZSAqLCB0cmVlICosIGludCAqKSk7CiBzdGF0aWMgdHJlZSBldmFsX3N1YnN0CQlQQVJBTVMgKCh0 cmVlLCB0cmVlLCB0cmVlLCB0cmVlLCB0cmVlKSk7CkBAIC0xNzcxLDcgKzE3NzAsNyBAQAogCiAv KiBSZXR1cm4gbm9uemVybyBpZiBDT0RFIGlzIGEgdHJlZSBjb2RlIHRoYXQgcmVwcmVzZW50cyBh IHRydXRoIHZhbHVlLiAgKi8KIAotc3RhdGljIGludAoraW50CiB0cnV0aF92YWx1ZV9wIChjb2Rl KQogICAgICBlbnVtIHRyZWVfY29kZSBjb2RlOwogewpJbmRleDogdG9wbGV2LmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2c3Jvb3QvZ2NjL2djYy9nY2MvdG9wbGV2LmMsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuNjkwLjIuOApkaWZmIC11IC1yMS42OTAuMi44IHRvcGxldi5jCi0tLSB0b3BsZXYu YwkzIE1hciAyMDAzIDE4OjI2OjEyIC0wMDAwCTEuNjkwLjIuOAorKysgdG9wbGV2LmMJNCBNYXIg MjAwMyAxOTo0MDo0OCAtMDAwMApAQCAtMTI1NSw2ICsxMjU1LDkgQEAKICAgeyAiLVdiYWQtZnVu Y3Rpb24tY2FzdCIsCiAgICAgTl8oIldhcm4gYWJvdXQgY2FzdGluZyBmdW5jdGlvbnMgdG8gaW5j b21wYXRpYmxlIHR5cGVzIikgfSwKICAgeyAiLVduby1iYWQtZnVuY3Rpb24tY2FzdCIsICIiIH0s CisgIHsgIi1XYm9vbGVhbi1iaXR3aXNlLWFuZCIsCisgICAgTl8oIldhcm4gYWJvdXQgYml0d2lz ZSBhbmQgZXhwcmVzc2lvbnMgb24gYm9vbGVhbiB2YWx1ZXMgdGhhdCBhcmUgYWx3YXlzIGZhbHNl IikgfSwKKyAgeyAiLVduby1ib29sZWFuLWJpdHdpc2UtYW5kIiwgIiIgfSwKICAgeyAiLVdtaXNz aW5nLWZvcm1hdC1hdHRyaWJ1dGUiLAogICAgIE5fKCJXYXJuIGFib3V0IGZ1bmN0aW9ucyB3aGlj aCBtaWdodCBiZSBjYW5kaWRhdGVzIGZvciBmb3JtYXQgYXR0cmlidXRlcyIpIH0sCiAgIHsgIi1X bm8tbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIiwgIiIgfSwKSW5kZXg6IHRyZWUuaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2MvZ2NjL2djYy90cmVlLmgsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMzY3LjIuMQpkaWZmIC11IC1yMS4zNjcuMi4xIHRyZWUuaAotLS0gdHJlZS5oCTkg SmFuIDIwMDMgMTI6MTE6MzggLTAwMDAJMS4zNjcuMi4xCisrKyB0cmVlLmgJNCBNYXIgMjAwMyAx OTo0MDo1MyAtMDAwMApAQCAtMjkxNSw2ICsyOTE1LDggQEAKIAwKIGV4dGVybiB0cmVlIGJ1aWxk X3JhbmdlX3R5cGUgUEFSQU1TICgodHJlZSwgdHJlZSwgdHJlZSkpOwogCitleHRlcm4gaW50IHRy dXRoX3ZhbHVlX3AJUEFSQU1TICgoZW51bSB0cmVlX2NvZGUpKTsKKwogLyogSW4gYWxpYXMuYyAq LwogZXh0ZXJuIHZvaWQgcmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzCQlQQVJBTVMgKCh0cmVlKSk7 CiBleHRlcm4gSE9TVF9XSURFX0lOVCBnZXRfYWxpYXNfc2V0CQlQQVJBTVMgKCh0cmVlKSk7Cklu ZGV4OiBjcC90eXBlY2suYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9nY2MvZ2NjL2dj Yy9jcC90eXBlY2suYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MzYuMi4yCmRpZmYgLXUgLXIx LjQzNi4yLjIgdHlwZWNrLmMKLS0tIGNwL3R5cGVjay5jCTIyIEphbiAyMDAzIDE5OjE3OjE1IC0w MDAwCTEuNDM2LjIuMgorKysgY3AvdHlwZWNrLmMJNCBNYXIgMjAwMyAxOTo0MTowNSAtMDAwMApA QCAtMzE1NSw2ICszMTU1LDIxIEBACiAgICAgICBicmVhazsKIAogICAgIGNhc2UgQklUX0FORF9F WFBSOgorICAgICAgLyogZ2l2ZSBhIHdhcm5pbmcgZm9yICghdWEgJiAweDQpIGFuZCBzaW1pbGFy IGNhc2VzICovCisgICAgICBpZiAod2Fybl9ib29sZWFuX2JpdHdpc2VfYW5kKQorICAgICAgewor ICAgICAgICAgaW50IG9wMG5vdDEgPSBUUkVFX0NPREUgKG9wMCkgPT0gSU5URUdFUl9DU1QgJiYg IWludGVnZXJfb25lcCAob3AwKTsKKyAgICAgICAgIGludCBvcDFub3QxID0gVFJFRV9DT0RFIChv cDEpID09IElOVEVHRVJfQ1NUICYmICFpbnRlZ2VyX29uZXAgKG9wMSk7CisJIGlmIChib29sZWFu X3ZhbHVlX3Aob3AwKSkgeworCQkgd2FybmluZygib3AwIGlzIGJvb2xlYW4iKTsKKwkJIGRlYnVn X3RyZWUob3AwKTsKKwkJfQorCSBpZiAoKG9wMG5vdDEgJiYgYm9vbGVhbl92YWx1ZV9wIChvcDEp KSB8fCAob3Axbm90MSAmJiBib29sZWFuX3ZhbHVlX3AgKG9wMCkpKQorICAgICAgICAgICAgd2Fy bmluZyAoImJpdHdpc2UgYW5kIGV4cHJlc3Npb24gaXMgYWx3YXlzIGZhbHNlIik7CisgICAgICB9 CisKKyAgICAgIC8qIGZhbGx0aHJvdWdoICovCisKICAgICBjYXNlIEJJVF9BTkRUQ19FWFBSOgog ICAgIGNhc2UgQklUX0lPUl9FWFBSOgogICAgIGNhc2UgQklUX1hPUl9FWFBSOgo=