From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NOR01-SV0-obe.outbound.protection.outlook.com (mail-sv0nor01on2062.outbound.protection.outlook.com [40.107.225.62]) by sourceware.org (Postfix) with ESMTPS id EA5EF3858D3C for ; Mon, 14 Nov 2022 15:49:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EA5EF3858D3C Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=westcontrol.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=westcontrol.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D1v+KQa+5E2hMiiJv9iCPP4Is3be3oR7IlIAGa7p7FqHGjR6DBFf2vA4wYNkQPBTrEvHz/Wqgd1rAHaaDIw0CylEqeRWVb0YCePc4NxI6MSLenOJ5HiYrzKzipKCO7aaiu0TRVzeZkm+qZEsMP+aHeHH1xIhHaVKYkyHKFdtbHA3XzMaOsyg05S81FCF6zvMm7Q2wpVK1Tax31rBok211Pm9LbPPUrs8w4mK2y3EEgVGDTPFCir0UvO4iS5rFQb2Rniz7x0K/G+OIbDxiOou8+zPceuQu2la+mCKPfVakJaxG8ETI7Ulc9N174eG+kn581hyvHLP5Xh9AVg3rPH8LQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GwRjyb9XLTGZ5vXL+Boy1Vq3wkZ8bAIdBp0WFGHs2OA=; b=YrVlhqu4WdPUEgJPl9ZhdVTEjqCdDC/5X6oLLa+AT/B71y4W5OcslOPcs0cGVcw/jiOtFNWffK6BaGcQXHDpnUoyQVTecQ0sI9DI1eNjPxxXlFrne2lqqac+khhG843xc8z2vLmjIOW4QLtTX1nMChin6ph3TRXWQPsYCIlecsFG53JQLE3TlDMomGqOfUULxXJZXGsabgJkbBtoMOfiIKg84Lxw4Rt8s/Czjcmr+fNdYIYFbdvipNUkEoy9eilT+LpUUTmeq5LI9AHgh2GeJkJlyAKck3YWCmho0RUCP0eb9Vn4KxPnr4E4UJ/97XgSShz3pZTWSUzapABvpzYHig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=westcontrol.com; dmarc=pass action=none header.from=westcontrol.com; dkim=pass header.d=westcontrol.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=westcontrol.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GwRjyb9XLTGZ5vXL+Boy1Vq3wkZ8bAIdBp0WFGHs2OA=; b=HqNkzNXDlNmVMd+cMjIDxalogJpjGSpsTn89mv203p6bcpz41XB6RdG4yePE32CRv5H6lxDjN+mgE59LqlBDrjbV/8Ytz23Lk7ByZzHKB3PIg4cuCF9gNxjwkkzjbdsD7mO380VcYzHZqLxIBV5l2w5Yu4pz0YWAaC9rKbsjzMW5+5Ci7xH8kabtjHo8JSQp4O6sowsYqjLbZXrw0XMQ/JCUeysedkhGKpXR+cqlagf1ObUkr5bv0QCsBPjiUG/f/5hzzLia4nkH/k42kdV0EWTK83rO9KzIL7MJsIon7Zh8+U8KkuoosROMCIb9PfExGd2Mh/gpvF8SmpSPpffTKg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=westcontrol.com; Received: from SVAP279MB0239.NORP279.PROD.OUTLOOK.COM (2603:10a6:f10:6::13) by SV0P279MB0043.NORP279.PROD.OUTLOOK.COM (2603:10a6:f10:e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.26; Mon, 14 Nov 2022 15:49:28 +0000 Received: from SVAP279MB0239.NORP279.PROD.OUTLOOK.COM ([fe80::7e3f:adb5:ce86:d0c]) by SVAP279MB0239.NORP279.PROD.OUTLOOK.COM ([fe80::7e3f:adb5:ce86:d0c%5]) with mapi id 15.20.5791.025; Mon, 14 Nov 2022 15:49:28 +0000 Message-ID: Date: Mon, 14 Nov 2022 16:49:15 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.13.1 Subject: Re: [BUG] -Wuninitialized: initialize variable with itself Content-Language: en-GB To: NightStrike Cc: Alejandro Colomar , Andrew Pinski , "gcc@gcc.gnu.org" , Martin Uecker , Joseph Myers References: <9711434a-daff-5422-d69b-2c8eaca5ad1e@gmail.com> <4e8d0be6-37f0-2478-a46a-730745313b70@gmail.com> <18215302-3f22-e023-c188-d67b7e70dbff@westcontrol.com> From: David Brown In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SV0P279CA0041.NORP279.PROD.OUTLOOK.COM (2603:10a6:f10:13::10) To SVAP279MB0239.NORP279.PROD.OUTLOOK.COM (2603:10a6:f10:6::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SVAP279MB0239:EE_|SV0P279MB0043:EE_ X-MS-Office365-Filtering-Correlation-Id: 352232d9-5da9-49a6-4489-08dac657d047 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AiiZQDlPdpRgAnauIj/BhJinSduSJJPpuGRi+EeAxSPuScTgS9F8MscUEnLHmHQbDX2R+HDlx6yKDVed5eu9EUNoFzxi+S2wp1dcj+TTzIlIr4X63E4pIxOaAUM6zA/CfbXWWhbzwZAnsHs3hFJNe7l7h1NM5QLxhMEE3/KxJw8hTEWLUxjPp9wqLCVBA8/7oVh7/QMJM007lFYxVLS4Htwoqd+Zy9MoqU2S9bPz5st/jWczBHdrK5vyPgd+ICyeXlChABKgi1o2fSKYtS6HxCFkVoQgyshnJx8ChMxILG62jI5yld/kQQUiAsCyuPkkVswN99v9TrnIw8iPOG0UChrnlKuRy+D+VCr/WsCv631xE5L+01SITDHztkzKicMcOBX60A/Kprc42qV945NhdKWu5fChl5yNpXI9l7sXrXCon+N4WTI7Ar86JG30u0LDqDNRYGHIgMfa9m87/qK+bNv0msqQ3DNgS2bBTqSjvdAcQuDcdmpLuOsp+S/jzpcGEIAMMV2q9sEafVjm1kfsRkBvrF0Zh7qW8WpXSF7BEVEyxZfHaHHcv9y7U4SgyH09CQZhXA5x3tGM4tO+M49e11QtUAuUHt9vK9T/7JL24GSDpp6Zi3Bf4F4o3JaJUlPoCKNhQnBrlSS/LLy063H02Cq1il1wDKcULTO+QrRjGuzfeBf/znPg9dlDDXZl/5E/mRA55EGsmMXPTH9YQGkBJ5hwl4nwOOo8CgVuO3Pzmao38Hfz+odlwJQHz4GaTtV0zueMJeqDCVdiFH2ixnTapSa+uB9yi2Z4/SQX2rGg53Y= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SVAP279MB0239.NORP279.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(396003)(376002)(346002)(136003)(39830400003)(451199015)(31696002)(36756003)(66946007)(31686004)(86362001)(38100700002)(6512007)(2906002)(53546011)(186003)(26005)(2616005)(6506007)(6666004)(83380400001)(5660300002)(316002)(8676002)(54906003)(66556008)(6916009)(4326008)(8936002)(66476007)(478600001)(6486002)(41300700001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YTRYRUpvdnI4YTErN1FpVmYrR2J5Q2RCaHdycWRuY0twbVoxV3d3NU1KeHYy?= =?utf-8?B?U0VweURJU29HV2tjdmpOaWtObm43RzhEUGJVMTdoRDdpOWgyREQzLzVDUDcz?= =?utf-8?B?UnVCWjlVSktkN3R6VUpKcW9GL0NNS0ovMzdiNkgreUJtYnJ5TnhodCswY2Uy?= =?utf-8?B?ODErUTEzN0FZUGZTQlpYd3I0eU96MllQa1FIL1ZoRlgvWjlvdnFSc3Erc1dD?= =?utf-8?B?WVp3K2cydlV2MDR6Q2Rqem5ScDZrbFVXcTdUN0FrelJzMzZLaU13eWtYa3g5?= =?utf-8?B?bnNSQ1NEdE1HVzZ1Yy9DcEkxWlFxbm9TRlN4ekRqaDFkNFJCMkF6R2tMTnlB?= =?utf-8?B?WGV2QnJuK2tuMDFkWmpKa0FiZ3pLNW1wTjBMQnFvekpMdTNxWEE3SEx6MVBW?= =?utf-8?B?OHJZaC9ZNC9FZ1NXOUpzUTJOZjRFTWcwRm1zR3dCWnlXbWlWbW0yM0ozMjkv?= =?utf-8?B?SWE0cFR0VXRLTHIwdG9PdGM2bS9xaytBTzFnK3JHTHk1cWk0TXFrN205QW1w?= =?utf-8?B?SitiQ1poM2RsbVBTQlVnRTFUbEI4TmJYM05xZXZXaDlUcWZjQS9VdlBxVm1C?= =?utf-8?B?cnY5QXBiaVBSaXY0Y1JhYlpxOWltTXZDOSt0SFZYR3dOaEFVb29VT25aK1pu?= =?utf-8?B?QkNha3BRRGtmMFdXQ0grMkdpTVNBYUVaa3BUL2dVdTlvNktZaU45Rk5JMGJD?= =?utf-8?B?bG05U2NYdTZaeFlzbWxNSmJKNkhDZ01xSXRBRk9WdWZoUVc0YTRWWU16RERP?= =?utf-8?B?cS9ZWmNpejZHRE9qQVVhUzhmVkNaMjcxNnhOcUx6TVFtMkFKbCsxcC96WThB?= =?utf-8?B?TVRNeTl5ak1IYmVBUUZndFRqNmkzTnhyT1g3end0ZDZoNU40SktMdHFhdERo?= =?utf-8?B?Tm56UzhFZHQyRzBpR1FGN0pRenF4b3VOODZobHBGR0pLdGJ2WVBGam90Z0h5?= =?utf-8?B?dmxmYkNwOXNqQUJGSmVxdWYvVFdLWTdqbitiT1JIdE9NbGlGQU0wbCtkanBn?= =?utf-8?B?UVpzTWNVZGxISmxpdWtQZ2F4ZWUxVEdDbGtQZTFXT2VKSlNlMUNWQ1JsSGdL?= =?utf-8?B?STcvOEhGTDY0WmFVdzB1amU5YXE1Y3hUcHdCWk15U1NJYmJacG52UWxsL0pV?= =?utf-8?B?ZkpiWlRPZlFlOEREMlhrOUQwZXVFaVNKUHM4S2c4Uzc0YVQ2T2sxSHhHMk5a?= =?utf-8?B?UTZpQS9UNFNUK1hQSFZ2dnNHQWdrbDl0YlU2Vks3NHdvWGtjYUVuMVdJNlB3?= =?utf-8?B?dG1HRFlqNVYrTUY0TEhlT3ZDbFRQV2sxVkZtTzllWnNZRGJNT0I2eU5ZMVBB?= =?utf-8?B?L2h6OUJXUDNGeWM5aHdJb0RjdHlQUG9VbXVYS1dXYkxiYTlPSmdDcWduZzlG?= =?utf-8?B?MkRNUnpLOStJNGtyUnYxZ2NiRFR5dEZhWTZ2cEdXVTRrZktQTG5zeEJVWUVS?= =?utf-8?B?RDVxMnNhWTRvUHFzM0lUYUx1alY5RmtxcXI5ek96Y0gzdVl1ZU9ZM1A3dEgw?= =?utf-8?B?eTVFNUErdjdqcEZVaVEzRTcxeVhyNVBGQ2Vrano1eFpmZ2RzMUxQd0xvN3BJ?= =?utf-8?B?V05tZUlTcUkxanR6SkYzVlM5N3dsYVFNR2VEOEs0SHRyY1ZEK1hldEM3Y1pM?= =?utf-8?B?TC84c3NzZzFZTVlUMFczeUVHbjdPSzdkMEs4Z1lEeEMzY2VSV01tYzV4U3BW?= =?utf-8?B?anFjNXZZcDNvc0FtSVFxZW9hOStrZ2M3clVNZk9BV2F5bUNiSTlwY0VGdXRD?= =?utf-8?B?K0pqNXFqU0JxWlpLZ0VJKzFIcEFBV3BHQXR6R25HeUFSSGdSYW9iZ2dvYlo4?= =?utf-8?B?L25GRlIvVFVyTU9seGFyU2dUcjRWNytOalhnbEVGdWtDcmJaSDU4dEhyVDZD?= =?utf-8?B?VXJhT1VVQ0dSQnhzQlZ5ZXV4dHBOcTRNbWVYck9UOTRpSUZxb2lVVHVUUzhq?= =?utf-8?B?ZHFYdmlwVUtUVUUwQ3d0VC94bWVTb2d6K1Qwc2FuNU5NRmx5U2E2OTE0cWFK?= =?utf-8?B?NHE4ajNENVB2eVd5TWVQbUY3dVVxd1ZCS2VxeWhHL3NUUUY2b1NYZzBJZS9G?= =?utf-8?B?a3IwOEplZ2dVYjYveTBiVVFJMUhlcGlhM2pHM09ZQnk4SG83eXFqOVRMRkU3?= =?utf-8?Q?6kZlLQS4kXAdNltzTGP0LbkAz?= X-OriginatorOrg: westcontrol.com X-MS-Exchange-CrossTenant-Network-Message-Id: 352232d9-5da9-49a6-4489-08dac657d047 X-MS-Exchange-CrossTenant-AuthSource: SVAP279MB0239.NORP279.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2022 15:49:28.6550 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: c75fbd3c-42ad-4db0-9cff-972faf83ae45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mvFmoAbNTaoy3gueprHLac+8W+M3poXPWqRmehYLLZNlOZNdyANoWKs3ogEUMdRmZ5Y3kznfjfdV4c8QVy+3cA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SV0P279MB0043 X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 14/11/2022 16:10, NightStrike wrote: > > > On Mon, Nov 14, 2022, 04:42 David Brown via Gcc > Warnings are not perfect - there is always the risk of false positives > and false negatives.  And different people will have different ideas > about what code is perfectly reasonable, and what code is risky and > should trigger a warning.  Thus gcc has warning flag groups (-Wall, > -Wextra) that try to match common consensus, and individual flags for > personal fine-tuning. > > Sometimes it is useful to have a simple way to override a warning in > code, without going through "#pragma GCC diagnostic" lines (which are > powerful, but not pretty). > > So if you have : > >         int i; >         if (a == 1) i = 1; >         if (b == 1) i = 2; >         if (c == 1) i = 3; >         return i; > > the compiler will warn that "i" may not be initialised.  But if you > /know/ that one of the three conditions will match (or you don't care > what "i" is if it does not match), then you know your code is fine and > don't want the warning.  Writing "int i = i;" is a way of telling the > compiler "I know what I am doing, even though this code looks dodgy, > because I know more than you do". > > It's just like writing "while ((*p++ = *q++));", or using a cast to > void > to turn off an "unused parameter" warning. > > > Wouldn't it be easier, faster, and more obvious to the reader to just > use "int i = 0"? I'm curious what a real world use case is where you > can't do the more common thing if =0. > You can write "int i = 0;" if you prefer. I would not, because IMHO doing so would be wrong, unclear to the reader, less efficient, and harder to debug. In the code above, the value returned should never be 0. So why should "i" be set to 0 at any point? That's just an extra instruction the compiler must generate (in my line of work, my code often needs to be efficient). More importantly, perhaps, it means that if you use diagnostic tools such as sanitizers you are hiding bugs from them instead of catching them - a sanitizer could catch the case of "return i;" when "i" is not set. (I don't know if current sanitizers will do that or not, and haven't tested it, but they /could/.) But I'm quite happy with : int i = i; // Self-initialise to silence warning I don't think there is a "perfect" solution to cases like this, and opinions will always differ, but self-initialisation seems a good choice to me. Regardless of the pros and cons in this particular example, the handling of self-initialisation warnings in gcc is, AFAIUI, to allow such code for those that want to use it.