From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32C64C3DA70 for ; Tue, 30 Jul 2024 16:46:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B41F56B0083; Tue, 30 Jul 2024 12:46:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AF1C16B0085; Tue, 30 Jul 2024 12:46:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9B9CA6B0089; Tue, 30 Jul 2024 12:46:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7DB7B6B0083 for ; Tue, 30 Jul 2024 12:46:28 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 07E9B120384 for ; Tue, 30 Jul 2024 16:46:28 +0000 (UTC) X-FDA: 82396997256.15.E0B74A3 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) by imf11.hostedemail.com (Postfix) with ESMTP id D9F474000E for ; Tue, 30 Jul 2024 16:46:24 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=google header.b=f4xb9E7V; dmarc=pass (policy=none) header.from=linuxfoundation.org; spf=pass (imf11.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.167.49 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722357940; a=rsa-sha256; cv=none; b=0qpxS667pTfJNfk7XcvIgz3XnBlZA3z9PM7KIwM2OFMdJvekGl8ZamcE5DZIN1NxUSDGOc vjhEkd8HuD7GZAMZEWcKD8H9otgt6VDA2M0I/x5B6ZTUk/F96rK0otsWchHhHD7ujLuMI7 dpiE/6vEn8mPvVn4MVgih+l4puFa3jk= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=google header.b=f4xb9E7V; dmarc=pass (policy=none) header.from=linuxfoundation.org; spf=pass (imf11.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.167.49 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722357940; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=pVxBYu/bR4J+MlOGhpmIDPdDtiBGD9YiOgaA/MSe6DM=; b=ALPxR9bQxdr4RuAdazCxpAcbpWCInN2FnIOcLuq0M0+TSZ56JfuSeMJbB6j1Tu0yzR6OvA l7tQYNd7/R7cPL1FsI/spGJH7x8ou7s1ZLKXvqa7EQblIhf4MvDSJJxDy/u/I2DHwfUet3 y1f/NWelwzx8tDgT4PmKDBfZkPIRa/E= Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-52efbb55d24so7290692e87.1 for ; Tue, 30 Jul 2024 09:46:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1722357983; x=1722962783; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=pVxBYu/bR4J+MlOGhpmIDPdDtiBGD9YiOgaA/MSe6DM=; b=f4xb9E7Vt32h0xrXzzBypg/sZqpn6h6dNpuAetPhuOOpKP4Y7XBNgeH+cl0OTvnd2f Z1+ad5UPUSPEKAj2QGr3tjzIDF8+ZqoCBoz4YtuUEUrwC3H59n48zfJP3CVG+dOZcn9v B+ET6oNKzCh2V/veeLV8P7FoY0UUflQwcdxRY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722357983; x=1722962783; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=pVxBYu/bR4J+MlOGhpmIDPdDtiBGD9YiOgaA/MSe6DM=; b=e9BpUFsI3c5A2hqKMORASaK3+F63HCjFURyr7L+BMLZV8PlZ9zjF7mrZoY2nI9gLUU 5xnXvHxEacDwbXOZ0zGA2gqJrntldRPJHD4fcMPciCbjzjGOa/bAPY8t2PFAmvzv2XOS 5gszIvIlKn+7Wy8fj8kAB5T/14fCxR+sT98H4eSwGFckIuKYgmD0x78CPgKiQ9lHL9wA yUPEDx6vp0d2gesMe6YwQfoi291dyAGHkTeLVvFdo2un20nfUHtAshGljfv3TFjK8cih jVWwRBLwXx+lVUlgH4pb+aq4EWp4HBdW5K5x+zzLiTCXU2et69kcwMop/PvqL0QI1bIm TAPw== X-Forwarded-Encrypted: i=1; AJvYcCV+pqjNyTCkyjRfosofydZYy5ciLI1esTTKCKfTrbAtdZ2FgjV+LqxuGRXGcE2V4YPgMgoTPstr6Ri3hZOCvDRvM4o= X-Gm-Message-State: AOJu0YyR141cS3tjx+VX5Bjc6Ve+8uarGPer/ZC5BJsVQTxIPnq359Xv pVc6VhKEmWTOpFNSyBZKFxx2xndbTThYGndmCwCdiAtEoyFC9W2MlFghs24q4NlCOTNaGYn7n5H 56DU15Q== X-Google-Smtp-Source: AGHT+IEskbg0U0lJ2768AvK0ls1j4c/6Fq/+EFPvloNja9KV/pjxwoLhKLP8kXgqvdFvxPQWKJ86Ow== X-Received: by 2002:ac2:4ade:0:b0:52c:d76f:4604 with SMTP id 2adb3069b0e04-5309b2cabb1mr7604034e87.46.1722357982919; Tue, 30 Jul 2024 09:46:22 -0700 (PDT) Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com. [209.85.218.45]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a7acac615c0sm663551666b.97.2024.07.30.09.46.22 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 Jul 2024 09:46:22 -0700 (PDT) Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-a7ab63a388bso377763666b.1 for ; Tue, 30 Jul 2024 09:46:22 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCXcL1Q+MzETUEaGsnH0UXD2ediZZz4ZsdxgWdPjZlVLPTEb34wg4A+gmuz87dTCo+j7Elz0jE3oERpqoaB2EWHSVt4= X-Received: by 2002:a05:6402:40c2:b0:5a3:d140:1a57 with SMTP id 4fb4d7f45d1cf-5b021285123mr11406715a12.1.1722357981871; Tue, 30 Jul 2024 09:46:21 -0700 (PDT) MIME-Version: 1.0 References: <402c3c617c29465c898b1af55e3c6095@AcuMS.aculab.com> <5cd3e11780df40b0b771da5548966ebd@AcuMS.aculab.com> In-Reply-To: From: Linus Torvalds Date: Tue, 30 Jul 2024 09:46:05 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 1/8] minmax: Put all the clamp() definitions together To: Arnd Bergmann Cc: David Laight , "linux-kernel@vger.kernel.org" , Jens Axboe , Matthew Wilcox , Christoph Hellwig , Andrew Morton , Andy Shevchenko , Dan Carpenter , "Jason A . Donenfeld" , "pedro.falcato@gmail.com" , Mateusz Guzik , "linux-mm@kvack.org" , Lorenzo Stoakes Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: D9F474000E X-Stat-Signature: 6qyfi86ezhxgmzye8iqnhykd6i5hjmuo X-Rspam-User: X-HE-Tag: 1722357984-241777 X-HE-Meta: U2FsdGVkX18NgtFWXbxTMCTFhsi88PgN7hGkh146PEewTrKNdBh2u2p79esMlbeTT9lROZURsBm2C2XrQyyjGHUBz5rxsoskddDP9WRvN5u7r2gSarbeHirYdUnrfeckusEM6ukcnJhDQTET0hYGq1N7mWZz93Fiel7akxhe4B1vm4gfGY/MDdT+H7qxr0khtdNdBXxe4gC7YndBNYPIwVQqiw3m7pAey/poxX1JLY3CxechuhZ2EOPxCFNxbwTGNfid3ZkKefuUMu5BDOhqaI6BAKJlsFqELxTAqOXYenREsUzJfHtVAY0V4yVjW8K/1AHQYqpLtmK+s4S0A6f+glVQzAAXUcNr9sq3PaEA04zhnVsmkbwb3kNyRWSBxDqowTRiLfuTlpi2q7qdtbI5ZNHSA70noFJfPjxCYogx+Egd8egux4JQKwZAKXA308Ls0Ik08VVR4d36ZhWnDJ2Df44FeG2YPmYHr7l3kN7cqCfUlLh13UmoiqxWNIl5SnLvrqkVYdozGyrx2dVjHmeNzN9sDM96yPvrydwzuWBAParYBxeecHA6OnlJq4i6bx6NK2QRsPKo5r0jkPN1ebCogIv0KBpQch8f/bZO2FKDBlSp913n4qHWkm9daMK5PjV/eh6KruDeKyjd6839chVSzPKR9ajFt3GgMpW16I4aO6xrRNN9GrLbxvGPBzGIBXI/kJDaigbIjcDHPZzBUtK4wkA5iH4hM1mXsTJ6nq67j+Hd5+JNEgiW9yWmsh1iW5IJT5gTReTge/onSSdErYsldjd39zpFq3TzIR457Xae5VBTGra3kAGb8Gs0sQwmVaT22BIJphOP5jr2rSAqDyMM/ExAOwXfe0QeIjKjQ6ZJ6V64eVFmhmkuSCPUu1qXgs8mvSCVclCTULWfcAtpiwNqH0rctvfDxMGsieJbxkztFYrVUxwBDmvdBdDNHP3trDyd5HH5/mxOlViu2DaU8eZ bQn9+iAV G6FBp1btGG8nNHz+OHIDI4lcE5NS6/4zueV2jQBHF9EV0FiuDDJwWHNhPXycV6FLCJBlADu4HqyZllRbQS9cfFdsNyfPgYFnx3OYoARpMvQC31tsQHI5zFn42BQ58BcBgmago9sg0XMdR4zmIFCPKGIGwfnkbHDuUqZYC9rP63S5CVVfEbvDxRwyp7GPZ9+8Tcs3JSXXZrX1D+HwNmNnkRNMDNHv4P5LAVbsyeypwvSQJOsRcAFth7pvConhHsG5Fk88dq+yma6OjbnVeibf8615zsM8yZmdMQ0WLYIWoOKyQpCHxOyvV4ndhZtubTBgxJQZvMn2TgTklNFzawBkPvFFRBArvtjSNOtG+8GTPqnlmeUkHP4lmhnS+flDUydJiKwsiYq8hKpstitHexXxWFx6UqhL147btqA+9dNPBuyjIx7eTfs9/11r6SbgTZ24WesNT X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, 30 Jul 2024 at 09:35, Linus Torvalds wrote: > > So here *locally*, source_min and source_max can't be ordered, but > what I think has happened is that we had that earlier > > WARN_ON(source_min > source_max); > > and then gcc sees the "statically_true(ulo > uhi)" test, and will do > CSE on the variables and on the test condition and the conditional, > and basically have turned all of this into > > if (source_min > source_max) { > WARN(..) > source_val = clamp(source_val, source_min, source_max); > } else { > source_val = clamp(source_val, source_min, source_max); > } Confirmed with your .config - removing the WARN_ON() removes the clamping range error, because then there is no "move code into shared conditional section" case any more. That's slightly annoying. The new clamp() logic is not only a much cleaner macro expansion, it's also *much* smarter and would find real problems when the limits have been passed as arguments to inline functions etc. But obviously this "it's statically wrong in one path when the code has been duplicated by the compiler" means that it's just too smart for its own good in this case. If the WARN_ON() had a "return error", it would all work out beautifully. But now we literally have code that says "I just tested for this error condition, and then I went ahead and did the error case anyway", and that just makes my nice new sanity check unhappy. Darn. Linus