Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751500AbdFGA2n (ORCPT ); Tue, 6 Jun 2017 20:28:43 -0400 Received: from mail-pf0-f169.google.com ([209.85.192.169]:33624 "EHLO mail-pf0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750766AbdFGA2m (ORCPT ); Tue, 6 Jun 2017 20:28:42 -0400 Date: Tue, 6 Jun 2017 17:28:40 -0700 From: Matthias Kaehlcke To: Linus Torvalds Cc: Arnd Bergmann , Linux Kernel Mailing List , Andrew Morton , Greg Kroah-Hartman , Ingo Molnar , Thomas Gleixner , Christoph Hellwig , Jens Axboe , Steven Rostedt , David Rientjes , Douglas Anderson , Guenter Roeck , Mark Brown , David Miller Subject: Re: [RFC] clang: 'unused-function' warning on static inline functions Message-ID: <20170607002840.GA141096@google.com> References: <20170530181306.GV141096@google.com> <20170531235519.GX141096@google.com> <20170606212354.GZ141096@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1159 Lines: 30 El Tue, Jun 06, 2017 at 02:28:03PM -0700 Linus Torvalds ha dit: > I applied the patch from David Rientjes to just make "inline" > automatically mean "maybe unused" for clang. Unfortunately as is the patch doesn't work: include/linux/compiler-clang.h:20:9: error: 'inline' macro redefined [-Werror,-Wmacro-redefined] #define inline inline __attribute__((unused)) ^ include/linux/compiler-gcc.h:78:9: note: previous definition is here #define inline inline notrace Another version of David's patch (https://lkml.org/lkml/2017/5/24/878) first undefines 'inline' before redefining it: #ifdef inline #undef inline #define inline inline __attribute__((unused)) #endif This works at least in the sense of not causing compiler errors. I couldn't validate if it actually still indicates the compiler to inline a function, since in any case 'inline' is only a recommendation. In the few experiments I did without the patch clang didn't make a difference between static inline and non-inline functions. The redefinition above could be used to fix the build error, however it would imply to lose the extra attributes from compiler-gcc.h.