From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-002c1b01.pphosted.com (mx0b-002c1b01.pphosted.com [148.163.155.12]) by sourceware.org (Postfix) with ESMTPS id 6932E398B16A for ; Wed, 17 Feb 2021 21:05:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 6932E398B16A Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 11HL2C9V001949 for ; Wed, 17 Feb 2021 13:05:43 -0800 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2170.outbound.protection.outlook.com [104.47.56.170]) by mx0b-002c1b01.pphosted.com with ESMTP id 36pf671dm9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 17 Feb 2021 13:05:42 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fN2+0gnQljNzCFywLnw/tzZ/d4yEUSSFPiFumAYrnKbt/PgS83wV2vyfY22LN1nr8TuSj92AHCBfTBj6GwGiBiktN0FDmVrc5rSlp9vTryUbfnNCp8ODBhZRCFOEF78/yJck7jgr0bBIexHDFor1pluW9d+3DKsbEuBLkjE9KKSSANqv6c1oe+1s9Hihd/Dpy5P4WX6f6AxCDZSy5u2DXP6bWwkrVL8FJepXmF4pYxihJvdhOj2UC7zaoIm92IH07SL5Kf+41rJx/tbZCcqgTWqCuHr4GHwJ91u/vQ9ReJE6oTnXQvjZt0FPLybxR2vTFFAPyDD0Gw0V1jeImvAqWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W+8pjtECN+uB+QM2xRrp1Yr1Oq+OECXpxb4gikoRuLY=; b=Q8Onbr07GHN5QR2PPGrBApiS+bIai52i3rBtUDHaKo/0B/hH6YB8AZVGW30eGC1ux4So6YdwaYydwctVAcDRMgWe0cGtq+lUb6+DaTIakMmCeomPzsorUglzXvOJP7hgeu0egHMjnILUKFKquF7KKGt51w2/O3S0uvQrb/VsHGfsxPfHOwbdHYAStqm9zI2g1IO6+PUd9rGAUx4J+r+hdoxeCXaNYnCGV+JuO/UddrxX/ht/kC6oA8b7BMAZUKDufQptSilQNfPsfCpGm00QtsBWgbKJyVtNDKKQhgc0eYV8p6LANscNWvRAdbZk1AoN9PBG0pqXXz/V3lr73hMATA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none Received: from MW2PR02MB3723.namprd02.prod.outlook.com (2603:10b6:907:2::32) by MW2PR02MB3724.namprd02.prod.outlook.com (2603:10b6:907:d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.27; Wed, 17 Feb 2021 21:05:40 +0000 Received: from MW2PR02MB3723.namprd02.prod.outlook.com ([fe80::2c19:5dc1:9081:871a]) by MW2PR02MB3723.namprd02.prod.outlook.com ([fe80::2c19:5dc1:9081:871a%7]) with mapi id 15.20.3846.041; Wed, 17 Feb 2021 21:05:39 +0000 From: Thanos Makatos To: "gcc@gcc.gnu.org" Subject: using undeclared function returning bool results in wrong return value Thread-Topic: using undeclared function returning bool results in wrong return value Thread-Index: AdcFcKQiLIjcuq38RJyb3xA3iebiww== Date: Wed, 17 Feb 2021 21:05:39 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [88.106.77.121] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 667a624c-d4a3-4092-e010-08d8d387c7d4 x-ms-traffictypediagnostic: MW2PR02MB3724: x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: LpavDRw4+efShiYzz1Nf4oIk4u1TrDN5LYf+QAD8VXXXWBFlGo7H0QRpiMbs7LxVfzIvYx/87l5rD7pOwdK+0e196zYvOYeX42ILqBe0GNaWLYncppR5Ml8MJteY9/Mbz13SEvqiR8ietg/hOl3MUVpFPW3a+Kzyzj2bJAihRdU3hTYt8VWTs68s8RSQSOwDsP9ITxbYBhTv8fnawO8zdpvu0RFWXdF5mKLIK5mRbNtXu2HcGIDdksyYkSYuZhJcnqDYmYkxolTsJt+AWrismqfF0mYsUBiqi4ZjmE9qQyLHhmOmH3G+/QB7fCtzok5wSUTHtvT+KjI4/CvTbnHjiog0cJT6n18T9vjtVu+Cel41gGgA59dReBeBCtoH20AvZ0xhlv/KMP/pmNld5IY2C2gV2khUgJh5D8NJamf4AGixjfnb0a9dvrLWwkZaTYrhADJaDSWi+C5PmQFOvEnABN+4HSpquAjRO0raik68IZQyZlkLK3BLTBOlmvu+YoruLIosnA0DTQ8RyqSn+/kCIg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR02MB3723.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(396003)(376002)(346002)(136003)(366004)(39860400002)(316002)(6916009)(7696005)(86362001)(186003)(9686003)(55016002)(6506007)(26005)(76116006)(71200400001)(8936002)(2906002)(52536014)(66476007)(83380400001)(8676002)(5660300002)(33656002)(478600001)(64756008)(66946007)(66446008)(66556008)(44832011); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?aDlTn3c81Bn9YYVcnZ3W2PnGVkOjkKkrpUVR5BTdISq+b0CAy9Cea/qTTJUj?= =?us-ascii?Q?wCGKmfVdTfosdsFh+QYjwDbdk0MQ9EU0ZcAsaOQB/PNqsAHA3sYIf1UZZIU3?= =?us-ascii?Q?0ej1i2++NfsX2zxgHIVXOV47/k0o/ONrtiNlrJ7ZUkzy8K1w9WvkUhLY195S?= =?us-ascii?Q?LQ3kAZmjtbvYCid/i12qQ8PlTfwQNKk3wW8r/JQ0OWZ9WNNYumONRrGdZoFH?= =?us-ascii?Q?fEqZP6wGPNQ1eqsDWO+fK7Tuk1e4+kgeh+FMpj1qFRsxiMxmQ8WPo+AU/ZWl?= =?us-ascii?Q?BxIbziU9tx3AjLqyL0uXFdtmXIJQDOkRRCV1PVaIbQwijhU0XBMWpvelhyQM?= =?us-ascii?Q?/UubcZ6hm87NnbsVerF7u3jGQ/9/PDfHLeoW1JvmqAxMcZ/HGYqB3YC46rTU?= =?us-ascii?Q?bBtiKtmlWEm+F1EDT+ko8jzuakYDrxpeNowUdFrXSLo72W7XSKWqgVpZJw9p?= =?us-ascii?Q?9NwUQXwyQhWuu8WL3VBBmbVNx6DqdTSSQzm1ocf3Bt53AAvsHxKO/AVQrha3?= =?us-ascii?Q?xde7AmHGNZ1ZOH9N6LuEFDeD8SFvzdXQ8sMqdwxmu/pmkYv3SndEYsTFh5Rf?= =?us-ascii?Q?3nL6vC123gB+xvrZX9Bc+WtapsImFAL36NOJESC4WUWml2WznJA2ckwrsgxH?= =?us-ascii?Q?RXI7emUkNcXVVAmT9atCMzTpereGVDOercnKCYtvw7a+wBg1BjBMC8Ew5wTQ?= =?us-ascii?Q?9buPgJlySmTT1ej60icGIyTw45r2hj0qIqnbec97qcGiVlfrJ04CFUU1lGsP?= =?us-ascii?Q?NpDcF0gSlMTGAnWquWq1My3rEqTt1lxfc7I7OHDQsYOVmnD42JkQc2REN2nE?= =?us-ascii?Q?fenAW+aoFz8w53HSHt56/Ytvm0tA1b0Op88AyvpQQV436EPgIL7BIXNDv1dd?= =?us-ascii?Q?0ZHI23JPWGYqHDoi3y2dw7OOwhvAhT/qa+skpGylub0YNmOjKcZN+/wgiydK?= =?us-ascii?Q?Vopjb41QeVZbXzw3ddp8AJWITAkKMUVTzN9utSp1iHGU0QE81PgTnZ/GhEad?= =?us-ascii?Q?RAnlM/7nxTHAoogtvwAgZqJfTr768Mmig0XLvnfb9Pu/A3vk7F+03NRbHjvo?= =?us-ascii?Q?X93GnpxVU8fxxxgGgciU+ntvkJ1JroJc2lO1HSrAS5MsUzuWPyZd+Gv/+QUo?= =?us-ascii?Q?uNWa3M++wSIEyyA3ny79ZrDc6iPKj+WQ6VeqiM6myiQLymzcZGjwiwmR/ObT?= =?us-ascii?Q?HYEWVpMNxB3uQSq6FuS6r/GXe+s4hlzPzlrP4givqTsRydW9+btPAdjYwODt?= =?us-ascii?Q?AKRiUr2rIeNiSB6hSIPV46rsNiM2kxn79YFkIyb8v7KtrvSVwWGz0nxgn61V?= =?us-ascii?Q?pHwbW/Hc4rjJ54llXnJtJDKB?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW2PR02MB3723.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 667a624c-d4a3-4092-e010-08d8d387c7d4 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Feb 2021 21:05:39.7778 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +63UAVHc9JzoZjTKcrnZJjKjycuvfOsm49/GcReKFXuSSj/BvUrAPQw65cJ6H1hpQqHHXcvOouoYhF0gmzKxUFT5nhICjmVioFjxw6D+pno= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR02MB3724 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-02-17_19:2021-02-16, 2021-02-17 signatures=0 X-Proofpoint-Spam-Reason: safe X-Spam-Status: No, score=0.2 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Feb 2021 21:05:45 -0000 I run into a problem that I'm not sure whether it's a bug in my program (mo= st likely) or something wrong with GCC (highly unlikely, I know, hence why = I haven't sent this to gcc-bugs). The problem is using a function that retu= rns a bool, defined in another source file without a declaration, and the p= rogram compiled with -O. In my test, function foo1 returns true while it sh= ould be returning false. Here are the files and repro: /* main.c */ #include #include #include bool foo2(int); void main(void) { assert(!foo2(0)); assert(!foo1(0)); } /* foo.c */ #include bool foo1(int n) { return n =3D=3D 1 || n =3D=3D 2 || n =3D=3D 4; } bool foo2(int n) { return foo1(n); } # gcc --version gcc (Debian 8.3.0-6) 8.3.0 # gcc main.c foo.c -O In file included from main.c:3: main.c: In function 'main': main.c:9:10: warning: implicit declaration of function 'foo1'; did you mean= 'foo2'? [-Wimplicit-function-declaration] assert(!foo1(0)); ^~~~ # ./a.out a.out: main.c:9: main: Assertion `!foo1(0)' failed. Aborted I get the same behavior if I use char instead of bool. The problem goes away if: 1. I declare foo1 in main.c (just like I do for foo2), or 2. compile w/o -O, or 3. use n =3D=3D 3 instead of n =3D=3D 4 in the return statement, or 4. use short or int instead of bool/char. Am I causing undefined behavior because I'm not declaring foo1? Please CC me in your response, I'm not subscribed to this list.