From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751458AbdFGIRW (ORCPT ); Wed, 7 Jun 2017 04:17:22 -0400 Received: from mail-oi0-f66.google.com ([209.85.218.66]:35741 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750739AbdFGIRT (ORCPT ); Wed, 7 Jun 2017 04:17:19 -0400 MIME-Version: 1.0 In-Reply-To: References: <20170530181306.GV141096@google.com> <20170531235519.GX141096@google.com> <20170606212354.GZ141096@google.com> From: Arnd Bergmann Date: Wed, 7 Jun 2017 10:17:18 +0200 X-Google-Sender-Auth: OzEIho6nlXhl7vnWDjabLur7mGE Message-ID: Subject: Re: [RFC] clang: 'unused-function' warning on static inline functions To: Jens Axboe Cc: Matthias Kaehlcke , Linus Torvalds , Linux Kernel Mailing List , Andrew Morton , Greg Kroah-Hartman , Ingo Molnar , Thomas Gleixner , Christoph Hellwig , Steven Rostedt , David Rientjes , Douglas Anderson , Guenter Roeck , Mark Brown , David Miller Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 6, 2017 at 11:29 PM, Jens Axboe wrote: > On 06/06/2017 03:23 PM, Matthias Kaehlcke wrote: >> El Tue, Jun 06, 2017 at 09:32:35AM -0700 Linus Torvalds ha dit: >> >>> On Tue, Jun 6, 2017 at 4:16 AM, Arnd Bergmann wrote: >>>> >>>> Those should all be fairly easy to address, I'd vote for leaving the >>>> warning enabled >>>> in clang, and possibly asking the gcc maintainers to add a similar feature for >>>> warning about it. >>> >>> Hell no. That warning is pointless shit. >> >> I tend to disagree, the warning is useful to detect truly unused >> static inline functions, which should be removed, rather than be >> carried around/maintained for often long periods of time. > > One example is the patch sent for CFQ, which has macros for define > functions for setting/clearing bits on the queue: > > #define CFQ_CFQQ_FNS(name) > > for one bit, we never clear the bit after we set it, we only set it and > later test for it. Hence the clear variant of that function is unused. > > Now I get a warning. The fix to that would be to define a new variant of > CFQ_CFQQ_FNS() that only declares the exact one I need for the version > that is never cleared. > > Or the fix is to just ignore the bogus warning on an unused inline. I > greatly prefer the latter. > > The counter example is this one: > > http://git.kernel.dk/cgit/linux-block/commit/?id=03ea8ad78cfb2910862c8dfcd2a627fc04097db2 > > where it is truly just dead junk. I'd rather just leave the dead junk > than have pointless warnings, if I have to choose one of the two > outcomes. This is a relatively rare case, with an inline function defined by a macro, and I sent a patch for a similar one in 1f318a8bafcf ("modules: mark __inittest/__exittest as __maybe_unused"). I think this is a case where the __maybe_unused annotation is reasonable, though for the other instances of unused inline functions in .c files, there is often a better way: typically the only caller of a function is inside of an #ifdef and moving the inline function definition into the same #ifdef block makes it clearer what is going on. Arnd